【问题标题】:How do I designate which compiler is called when running cmake + make?运行 cmake + make 时如何指定调用哪个编译器?
【发布时间】:2020-08-20 03:03:56
【问题描述】:

我正在尝试在 OSX 上使用 cmake 和 make 编译 c++ 项目,但是当我想使用 g++ (gcc) 时,make 似乎正在使用 CXX 或 clang,因此我可以按照此处的答案告诉编译器在哪里查找项目中使用的 tbb 的头文件(#includes):Need help getting intel TBB working?

brew list 显示我安装了最新版本的 cmake、make、gcc 和 swig。

这是我要编译的项目以供参考:https://github.com/nmoehrle/mvs-texturing/blob/master/README.md

【问题讨论】:

  • clang 还支持 -I-L 标志。
  • 也许您正在寻找 CMAKE_CXX_COMPILER 和 CMAKE_C_COMPILER?
  • Clang 和 GCC 在编译器标志方面具有相同的语法。应该没有区别
  • 您是否安装了Intel TBB
  • 感谢您的回复! @rustyx 我确实安装了 TBB

标签: c++ gcc makefile cmake g++


【解决方案1】:

我遇到了这个相关的答案,并且能够让项目正常运行! MacOS, CMake and OpenMP

我使用以下命令更新了 cmakelists.txt 以将 llvm 设置为编译器。注意,我需要更新 llvm 文件路径以匹配我安装的版本号。

set(CMAKE_C_COMPILER "/usr/local/Cellar/llvm/5.0.1/bin/clang")
set(CMAKE_CXX_COMPILER "/usr/local/Cellar/llvm/5.0.1/bin/clang++")
set(OPENMP_LIBRARIES "/usr/local/Cellar/llvm/5.0.1/lib")
set(OPENMP_INCLUDES "/usr/local/Cellar/llvm/5.0.1/include")

然后我也遇到了 OpenMP 的问题,所以我添加了这个部分来配置 OpenMP 包含目录和链接目录。

if (OPENMP_FOUND)
    include_directories("${OPENMP_INCLUDES}")
    link_directories("${OPENMP_LIBRARIES}")
    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif(OPENMP_FOUND)

我是一个新手开发者,希望我能更深入地了解为什么它会起作用,但它解决了我的问题!

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多