CMake如何选择gcc和g ++进行编译?

时间:2012-09-18 10:22:51

标签: c++ cmake

我是CMake的新手,我想知道LINUX环境中的C ++ / C项目如何让CMake在gcc和g ++之间选择编译器。更具体地说,我的问题如下:

  1. 如果项目由.c和.cpp文件组成,那是不是真的 .c文件将由gcc编译,而.cpp文件将是.c文件 由g ++编译?
  2. 如果项目只有c文件或cpp文件,那么默认值是什么 编译CMake的操作?是否可以改变它?

2 个答案:

答案 0 :(得分:15)

很快,两者都是。

你可以用几乎所有东西进行破坏。有标记和变量绑定语言的扩展;然后是语言到定义工具集和构建目标的编译器选项/可执行文件。

检查以下文档链接。这些是一些令人愉快的简短读物。

  1. Change compiler/toolset
  2. Per-language extensions
  3. LANGUAGE variable
  4. 注意:维基可能已经过时,但如果出现重要和教育问题,它应该保留。

    PS。有很多相关的选择。对于较长时间的阅读,您可以查看以下文档部分:Properties on Source FilesVariables for Languages。 2.和3.来自这些部分。

答案 1 :(得分:12)

据我所知,CMake只看文件扩展名。因此,如果您将.c文件重命名为.cpp,据我所知,它将使用g ++进行编译。

很容易改变这种行为。 CMake使用环境变量来查看要使用的编译器。如果您想将编译器更改为例如clang和clang ++,你可以做到

导出CC = clang export CXX = clang ++

在运行cmake之前。