2010-02-12 36 views
2

我正在使用CMake,并且我的程序使用g ++编译得很好。不过,我也希望用bcc32和cl编译它。CMake不对编译器使用适当的输出命令行参数

我遇到了一个问题 - 我告诉cmake通过执行命令行来使用这些编译器,有点像“cmake -DCMAKE_CXX_COMPILER = cl”或其他东西,它会正确地读取编译器(即,情况下,MSVC变量设置为true)。

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

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

回答

4

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

+0

这混淆我咯。从手册页看来,-G指定了makefile生成器 - 我使用GNU make来自动编译,而不是MSVC项目或东西。所以我想让cmake生成的是我可以用gmake运行的东西,但是可以使用cl或bcc32作为编译器。 还是我误解了这个? cmake --help没有提及可用的visual studio生成器的任何信息。 – Kozaki 2010-02-12 19:50:53

+0

AFAIK将'cl'定义为编译器的唯一方法是创建VS项目 - 这就是“Visual Studio”生成器将为您执行的操作。使用正常的GNU makefile,你只能使用GCC,MinGW等,但不能使用cl。 – AndiDog 2010-02-12 19:55:43

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” ......