如果选择“Eclipse MingW Makefile”或“Eclipse Unix Makefile”,Windows与cmake,eclipse和MingW有什么区别?
对于MingW,我总是会遇到“sh.exe”的错误(如果我重新点击“Configure”就会消失),使用Unix,我总是需要手动指定windres,因为cmake无法找到它。
这对Eclipse或其他东西有什么影响吗?
生成的Makefile都与Eclipse和MingW一起工作并编译我的项目。
我应该选择什么Makefile?为什么?
答案 0 :(得分:7)
这真是一团糟。
CMake在Windows上有许多不同的Makefile生成器:MSYS,MinGW,NMake和Unix。 CDT生成器在Makefile生成器之上工作,还为您生成Eclipse项目。目前,CDT生成器仅支持MinGW,NMake和Unix。
这些之间的区别在于它使用的“制造”味道。 MinGW,MSYS和Unix都是GNU make的变体(在这种情况下,Unix意味着“Cygwin”)。它们之间的差异主要与how commands are executed有关,更具体地说,哪个shell用于执行命令。 GNU make将非常努力地使用“sh.exe”而不是“cmd.exe”,这通常是出错的地方:在Makefile中有一个命令,它假设有关用于执行的shell的详细信息。选择GNU make flavor时的另一个问题是找出可用的标准Unix实用程序(sed / grep / etc)。一个值得注意的细节是,如果GNU make使用cmd.exe来执行命令,它将不支持parallell构建。
如果您使用Unix Makefiles,CMake将假设您的make是Cygwin,并且具有完整的Unix仿真功能。
还要确保您实际运行“正确”制作。如果你已经生成了Unix Makefile,但你的PATH中有MinGW,那么在你的构建树中输入“make”可能会因为奇怪的错误而失败。
但关于你的问题:只要它有效,它就无所谓。
答案 1 :(得分:3)
cmake -G"MSYS Makefiles"
有很多帮助