39

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

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

2 回答 2

20

很快,两者都是。

你几乎可以处理所有事情。有标志和变量将扩展绑定到语言;然后是定义工具集和构建目标的编译器选项/可执行文件的语言。

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

  1. 更改编译器/工具集
  2. 每种语言的扩展
  3. 语言变量

注意:该 wiki 可能已经过时,但它应该在重要和教育问题的情况下保留。

PS。有很多相关的选项。如需更长的阅读时间,您可以查看以下文档部分:源文件属性语言变量。2. 和 3. 来自这些部分。

于 2012-09-18T11:15:22.657 回答
15

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

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

出口 CC=clang 出口 CXX=clang++

在运行 cmake 之前。

于 2012-09-18T10:27:38.253 回答