CM不为编译器使用适当的输出命令行参数

时间:2010-02-12 19:38:06

标签: c++ visual-c++ g++ cmake borland-c++

我正在使用CMake,我的程序用g ++编译得很好。但是,我也希望用bcc32和cl。

编译它

我遇到了一个问题 - 我告诉cmake通过执行命令行来使用这些编译器,有点像“cmake -DCMAKE_CXX_COMPILER = cl”或诸如此类的东西,它正确地选择了编译器(即,在那种情况下) ,MSVC变量设置为true)。

但是,它似乎仍然使用gnu命令行参数,这会导致编译器在CXX编译器测试中失败(即,它尝试使用-o为cl指定和输出文件而不是/ Fe,并且而不是-e为bcc32)。

是否有一些正确的方法来指定使用哪种编译器,或者某种方法来解决这个问题?

2 个答案:

答案 0 :(得分:4)

您必须使用-G参数来定义应该为哪个编译器生成make文件。只需启动cmake --help即可查看哪些发电机可用。例如,-G "Visual Studio 9 2008"将为32位Visual Studio 2008创建makefile。

答案 1 :(得分:3)

您可以将任何编译器用于makefile生成器,但必须由完整路径指定,或者在PATH环境变量中可用。

可能让您感到困惑的一件事是,一旦在CMake构建树中指定了编译器,就无法更改它。你必须吹走构建树并重新开始使用新的编译器。您不能简单地使用不同的-DCMAKE_CXX_COMPILER参数再次运行cmake。从头开始......

我们使用gmake和cl以及“Unix Makefiles”生成器在一些客户端上运行CMake仪表板。请参阅在此处设置此类构建的脚本:

http://www.cdash.org/CDash/viewNotes.php?buildid=581283

要查看运行脚本的结果,请在URL中将“viewNotes”替换为“buildSummary”...