如果我select“Eclipse MingW Makefile”或“Eclipse Unix Makefile”,那么Windows上的cmake和eclipse和MingW有什么区别?
对于MingW,我总是会得到一个“sh.exe”错误(如果我重新打“Configure”就会消失),因为cmake找不到它,所以我一直需要手动指定。
这对Eclipse或其他东西有什么不同吗?
生成的Makefiles都可以和Eclipse和MingW一起工作并编译我的项目。
我应该select什么Makefile? 为什么?
这真是一团糟。
CMake在Windows上有许多不同的Makefile生成器:MSYS,MinGW,NMake和Unix。 CDT生成器在Makefile生成器之上工作, 同时为你生成一个Eclipse项目。 目前只有MinGW,NMake和Unix被CDT生成器支持。
这些之间的区别是它使用的“制造”味道。 MinGW,MSYS和Unix都是GNU make的变种(在这种情况下,Unix意为“Cygwin”)。 它们之间的区别主要与命令的执行方式有关 ,更具体地说,是用哪个shell来执行命令。 GNU make将很难使用“sh.exe”而不是“cmd.exe”,而这通常是出错的地方:在Makefile中有一个命令,它假定哪个shell被用于执行。 选择GNU时的另一个问题是使用哪种标准的Unix工具(sed / grep / etc)。 一个值得注意的细节是,如果GNU make使用cmd.exe来执行命令,它将不支持并行生成。
如果你使用Unix Makefiles,CMake会认为你的make是一个Cygwin的,具有完整的Unix模拟。
还要确保你实际运行的是“正确的”。 如果您已经生成了Unix Makefiles,但是您的MinGW首先在您的PATH中创建,那么在构建树中输入“make”可能会失败,出现奇怪的错误。
但是关于你的问题:只要它有效,那真的没有关系。
cmake -G"MSYS Makefiles"
编译MinGW时, cmake -G"MSYS Makefiles"
帮助很大