我目前正在开发一个C ++命令行实用程序,作为Github上的开源实用程序进行分发。但是,我希望下载程序的人能够在尽可能少的步骤中轻松地在任何平台(特别是Mac,Linux和Windows)上编译和运行程序。假设只需要对代码进行小的更改以使其与各种独立于平台的C ++编译器(g ++和win32)兼容,我该怎么做? makefile是否相关?
答案 0 :(得分:2)
我的建议是,不要使用make文件,维护大型项目的文件是单调乏味的,有时会发生错误,你不能立即捕获(因为* .o文件仍在那里)。
请参阅此问题here
答案 1 :(得分:0)
Makefile确实非常重要。您可能会发现需要(至少)两个不同的makefile来补偿您有不同编译器的事实。
很难具体说明如何解决这个问题,因为这取决于项目的复杂程度。编写脚本/批处理文件可能最简单,只记录“在Linux / Unix上使用命令build.sh,在Windows上使用build.bat”) - 然后让相应的文件处理,例如设置名称编译器和标志等
或者你可以在makefile中有一个include,它由架构决定。或者不同的makefile。
如果项目真的很简单,它可能只是提供一个基本的makefile - 但它不太可能,因为在Linux / MacOS上编译x.cpp会使一个目标文件被称为xo,在windows上目标文件是叫x.obj。库有不同的名称,dll有不同的名称,在Linux / MacOS上,最终的可执行文件没有扩展名(通常)所以它被称为“myprog”,其中windows下的可执行文件称为“myprog.exe”。
这些差异意味着makefile需要不同。