【问题标题】:CMake not using appropriate output command line argument for compilerCMake没有为编译器使用适当的输出命令行参数
【发布时间】:2010-02-12 19:38:06
【问题描述】:

我正在使用 CMake,并且我的程序使用 g++ 编译得很好。不过我也想用bcc32和cl编译一下。

我遇到了一个问题——我告诉 cmake 通过执行类似于“cmake -DCMAKE_CXX_COMPILER=cl”之类的命令行来使用这些编译器,它会正确地选择编译器(即,在这种情况下, MSVC 变量设置为 true)。

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

是否有适当的方法来指定要使用的编译器,或者有什么方法可以解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这让我有点困惑。从手册页来看,似乎 -G 指定了一个 makefile 生成器——我使用 GNU make 来自动编译,而不是 MSVC 项目或其他东西。所以我希望 cmake 产生的是我可以用 gmake 运行的东西,但可以使用 cl 或 bcc32 作为编译器。还是我误解了这个? cmake --help 没有提及可用的 Visual Studio 生成器。
    • AFAIK 将cl 定义为编译器的唯一方法是创建 VS 项目 - 这就是“Visual Studio”生成器将为您做的事情。使用普通的 GNU makefile,您只能使用 GCC、MinGW 等,但不能使用 cl。
    【解决方案2】:

    您可以将任何您想要的编译器与 makefile 生成器一起使用,但它必须由完整路径指定,或者在 PATH 环境变量中可用。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多