在各种平台上封装C++应用程序
packaging a C++ applications on various platforms
我一直在做各种C++项目——在Qt中有几个项目——虽然我一直在使用应该是跨平台的库(Qt、OpenGL等),但我不知道有任何工具可以在各种平台上构建一个代码库,就像移动设备一样。这样的服务存在吗?我可以有一个基本的构建框架,围绕它进行开发,并将它发送给一些为windows、mac和几个linux发行版构建它的服务?
希望我的胡言乱语有意义,而不仅仅是疯狂的谈话。:)
我认为,因为许多库依赖于操作系统特定的线程,所以存在非常强的局限性。
大多数使用一些第三方库的项目,除非所有这些库都是特定的跨平台的,否则该项目不再是跨平台的轻松构建。
最接近的情况是,如果你说,"如果你只链接到标准库和/或Boost和/或Qt和/或<insert name of cross platform library>
,那么将其打包为所有桌面平台的服务就可以了。"
许多脚本语言都在努力达到这一点,让它们的大多数模块和构建在跨平台上表现相同。但我偶尔还是会发现一个基于通用脚本语言的开源项目,上面写着"仅unix"或"仅windows"。通常我认为这是因为在两者之间移植线程设置很烦人。。。或者项目中有人是<insert name of OS>
的铁杆粉丝,认为任何想在不同的操作系统上做something
的人都是疯了。只有当特定开源工具背后的社区在操作系统偏好方面变得足够大和多样化时,才会发生变化,并为多个发行版移植和维护它。
KDE
正处于测试阶段,将在Windows上支持其所有应用程序。
wine
让人们在linux上运行一些特定于窗口的程序。
cygwin
让那些希望在windows机器上使用linux命令的人通过。
我认为一些大致符合这一概念的服务不做C++,而是服务于SaaS,即软件即服务。他们设置了一个服务器来运行你的程序,以及一个将其提供给浏览器的网站,然后你就有了一个跨平台的程序。然后是Java,它有点朝着同样的方向。。。
希望能有所帮助。
我不认为有什么东西可以为Windows、Mac和Linux构建C++代码。您可以使用像Qt这样的跨平台库,它使您能够在包括移动设备在内的各种平台上编译代码。但要做到这一点,您应该在目标平台上编译代码,或者安装必要的工具链并交叉编译代码。但包括安装工具链和提供适当设置在内的所有工作都应该手动完成。
例如,您应该使用MinGW在Linux上为Windows编译,或者使用cygwin在Windows上为Linux编译,这需要大量的工作。此外,它还取决于您希望在其上为目标平台进行交叉编译的主机平台。例如,如果您想在Mac上为Windows进行交叉编译,则工具链广告设置与在Windows上为Linux或Mac进行交叉编译不同。
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将可变参数函数的参数封装在类实例中
- 如何封装一个函数,以便它只能由同一类中的一个其他函数调用?
- 封装C++模板
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- 从封装在对象中的函数 C++ 返回时为空的列表
- 当要访问的对象被多次封装时,如何正确使用setter
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 如何在类中封装C/C++套接字发送和接收函数?
- 如何使用吸气剂方法实现C++封装
- 封装 std::map 以允许迭代,但没有直接密钥访问?
- 类C++友元函数无法访问封装的类
- 当从成员类调用封装的std::begin时,程序崩溃
- 从私有成员类中断封装派生的模板类
- C++实用程序,用于将长开关语句转换为封装开关案例阶梯的简洁函数调用
- 如何修复列表视图中的错误?,封装控件时无法选择任何项
- 我们可以使用命名空间实现封装吗?
- 封装 std::vector 以允许迭代,但不允许其他内容
- lambda[=] 上的复制值被另一个封装的 lambda[&] 阻止
- 如何使用提升范围将自定义迭代器封装在函数中