【问题标题】:How does CMake choose gcc and g++ for compiling?CMake如何选择gcc和g++进行编译?
【发布时间】:2012-09-10 14:26:33
【问题描述】:

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

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

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

    很快,两者都是。

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

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

    1. Change compiler/toolset
    2. Per-language extensions
    3. LANGUAGE variable

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

    附言。有很多相关的选项。如需更长的阅读时间,您可以查看以下文档部分:Properties on Source FilesVariables for Languages。 2. 和 3. 来自这些部分。

    【讨论】:

    • 什么是有效的语言选项?具体来说,我应该输入什么作为 LANGUAGE ????用于 Ubuntu Linux 中的 Objective-C++(.mm 文件)?
    • 这是一个完全不同的问题。 IMO 你应该单独问。特别是因为我对Objective-C++一无所知=)。问题是,我不知道它是否默认支持。如果没有,您可能最终不得不自己设置所有内容,即所有 *<LANG>* 变量,但您可以根据需要选择变量名称 =)。
    【解决方案2】:

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

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

    导出 CC=clang 导出 CXX=clang++

    在运行 cmake 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      相关资源
      最近更新 更多