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

43

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

  1. 如果一个项目由.c和.cpp文件组成,是否正确的做法是使用gcc编译.c文件而使用g++编译.cpp文件?
  2. 如果一个项目只有c文件或cpp文件,CMake的默认编译操作是什么?是否可以更改?
2个回答

22

简而言之,是的,两者都可以。

你可以与几乎所有东西进行交互。有一些标记和变量将扩展绑定到语言中;然后语言绑定到编译器选项/可执行文件,这定义了工具集和构建目标。

请查看以下链接以获取文档。它们都是一些愉快且简短的阅读材料。

  1. 更改编译器/工具集
  2. 按语言分配扩展名
  3. LANGUAGE变量

注意:这个Wiki可能已经过时,但对于重要和教育性的事项仍然适用。

附注:还有一大堆相关选项。如果想进行更长时间的阅读,请查看以下文档章节:源文件属性语言变量。第2点和第3点来自这些章节。


有哪些有效的语言选项?具体来说,在Ubuntu Linux中,我应该输入什么作为Objective-C++(.mm文件)的LANGUAGE????? - gone
这是一个完全不同的问题。我认为你应该单独问它。尤其是因为我对Objective-C++一无所知 =) 问题是,我不知道它是否默认支持。如果不支持,你可能最终需要自己设置所有* <LANG> *变量,但你可以选择变量名 =)。 - luk32

15
据我所知,CMake仅查看文件扩展名。因此,如果您将.c文件重命名为.cpp,则在我所知的范围内,它将使用g++编译。
要更改这种行为很容易。CMake使用环境变量来确定使用哪个编译器。如果您想将编译器更改为例如clang和clang ++,只需执行以下操作:
export CC=clang export CXX=clang++
然后再运行cmake。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接