C++在不同的平台上编译
C++ Compile on different platforms
我目前正在开发一个C++命令行实用程序,作为Github上的开源实用程序分发。然而,我希望下载该程序的人能够在任何平台(特别是Mac、Linux和Windows)上以尽可能少的步骤轻松编译和运行该程序。假设只需要对代码进行微小的更改,就可以使其与各种独立于平台的C++编译器(g++和win32)兼容,我该如何做到这一点?makefile是否相关?
我的建议是,不要使用make文件,为足够大的项目维护文件是乏味的,有时会发生错误,你不会立即发现(因为*.o文件仍然存在)。
请在此处查看此问题
Makefile确实具有高度相关性。您可能会发现,您需要(至少)两个不同的makefile来弥补编译器不同的事实。
很难具体说明如何解决这个问题,因为这取决于项目的复杂程度。编写脚本/批处理文件可能最简单,只需记录"在Linux/Unix上使用build.sh命令,在Windows上使用build.bat命令"),然后让相应的文件处理,例如设置编译器的名称和标志等。
或者,您可以在makefile中包含一个include,这是由体系结构决定的。或者不同的makefile。
如果这个项目真的很简单,它可能只需要提供一个基本的makefile就足够了,但这不太可能了,因为在Linux/MacOS上编译x.cpp会产生一个名为x.o的对象文件,在windows上,对象文件名为x.obj。库有不同的名称,dll有不同的名字,在Linux/McOS上,最终的可执行文件没有扩展名(通常),所以它被称为"myprog",其中windows下的可执行文件被称为"myprog.exe"。
这些差异意味着makefile需要有所不同。
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- C2064 从 MSVC v100 更新到 v140 平台工具集时出现编译错误
- 在没有节点GYP的目标平台上编译C/C 文件
- 重用编译器前端的结果,以加快多个配置/平台的C++代码编译
- Visual Studio:编译每个平台和配置上的模块列表
- 在目标平台上编译 Boost 自己是否有意义
- Clang没有为X86以外的其他平台编译代码
- 如何将assimp(assert importer)交叉编译到像ps4或XBox1这样的平台
- GCC可以用于编译到自定义平台吗
- 针对".rodata"的搬迁R_X86_64_32S...在 64 位平台上编译时
- 如何使JNI项目在所有JB、KK和LP下工作,这些项目仅在一个平台下编译
- C++在不同的平台上编译
- std::string异常以及如何查找已编译的c++应用程序的平台工具集
- G++ 如何编译无法打开控制台的程序。它必须是多平台的,而不仅仅是Windows。
- 创建一个构建框架来支持编译支持多个平台的代码
- "Cannot execute binary file"在 Ubuntu for Windows 平台上使用 Eclipse 运行编译的 c++ 程序时
- 64位平台上的编译错误C2664
- 为什么android ndk不能在多个平台上编译?
- 游戏引擎如何针对多个平台进行编译?
- c++的平台独立性.检测和编译