Cha*_*kka 18 c++ cross-platform cross-compiling
我使用的是Windows 7 - 32位操作系统.
我想将我的简单C++源代码编译成所有操作系统和体系结构的可执行文件.
我想从我的操作系统编译以下操作系统.
有可能吗?
注意:我需要为只有Win7 32位的所有操作系统编译C++.
Ste*_*ser 30
在目标操作系统上编译它比编译它更容易.您需要的是每个操作系统和"制造"工具的工具链.CMake具有强大的交叉编译能力.这不是必需品,但会节省一些钱:获取虚拟化软件(例如VMWare Player是免费的)并运行不同的操作系统.
我会推荐clang(OSX),gcc(Linux),TDM gcc(Windows)作为工具链(MSVC也不错,但不是免费的).32位和64位之间的差异应该不是问题.当你使用不同的编译器时,我建议通过在每个编译器上打开最迂腐的编译器标志来坚持标准.
我还建议您在某个地方拥有一个持续集成服务器,每个操作系统目标和体系结构都有一个客户端.这可以减轻您在一个操作系统中进行的不兼容更改的痛苦.您还可以通过包管理器或安装程序确保安装.
只需在网上搜索有关交叉编译,工具链和持续集成的进一步阅读.
aar*_*gon 11
你需要一个像自动工具或CMake这样的构建系统,我推荐后者.有一个名为cookiecutter的Python实用程序,它允许您使用Python(BoilerplatePP模板)创建一个简单的CMake/C++模板项目.在该链接中,您可以获得有关如何使用它来创建启动项目的说明.初始项目看起来应该是这样的:
$ tree cpp/
cpp/
??? CMakeLists.txt
??? README.md
??? include
? ??? Calculator.hpp
??? src
? ??? CMakeLists.txt
? ??? Calculator.cpp
??? test
? ??? CMakeLists.txt
? ??? CalculatorTests.cpp
??? thirdparity
??? catch
??? include
??? catch.hpp
Run Code Online (Sandbox Code Playgroud)
CMake支持2.6版的交叉编译.阅读本文以深入了解此问题.祝好运.
您可以开始使用CMake并为所有操作系统中的编译器准备好项目.
在某些特殊情况下,您应该调整代码,包括预处理器检查您正在使用的操作系统.例如:
#ifdef WIN32
//do some stuff for Windows
#elif __APPLE__
//do some stuff for Apple
#elif __linux__
//do stuff for Linux
#endif
Run Code Online (Sandbox Code Playgroud)
在此链接中,您可以找到所有预定义宏的列表.
要仅使用Win7 32位交叉编译所有内容,您可以使用GCC交叉编译器.到目前为止,GCC或CLANG是Windows,Mac和Linux上唯一可用的编译器.如果您想为其他目标构建项目而不是仅构建Windows 32位,请关注此Wiki
| 归档时间: |
|
| 查看次数: |
26765 次 |
| 最近记录: |