CMake:如何将编译器标志添加到非默认编译器

时间:2009-11-05 10:53:16

标签: c++ cross-platform cmake

您好我想用intel编译器构建一个项目。

使用默认gcc我经常运行:

cmake -DCMAKE_CXX_FLAGS=-I/some/path  /path/to/project

这很好用。

cmake -DCMAKE_CXX_COMPILER=icpc -DCMAKE_C_COMPILER=icc  -DCMAKE_CXX_FLAGS=-I/some/path  /path/to/project

当我尝试使用非默认编译器时,它根本不会将CMAKE_CXX_FLAGS变量内容路径到编译器。

如何解决这个问题?

正确答案是:

  1. 您需要指定CMAKE_CXX_FLAGS变量的类型:

    -DCMAKE_CXX_FLAGS:STRING=-I/some/path
    
  2. 您需要为C和C ++编译器提供完整路径:

    cmake -DCMAKE_C_COMPILER=/opt/intel/bin/icc -DCMAKE_CXX_COMPILER=/opt/intel/bin/icpc -DCMAKE_CXX_FLAGS:STRING=-some-flag
    

3 个答案:

答案 0 :(得分:6)

做你期望的好方法是使用:

export CC=icc CXX=icpc cmake -DCMAKE_CXX_FLAGS=-I/some/path  /path/to/project

答案 1 :(得分:3)

是否有一些原因导致您无法将包含路径(从CMAKE_CXX_FLAGS)添加到CMakeLists.txt文件中?

add_includes(/some/path)

答案 2 :(得分:2)

我知道你不想编辑CMakeLists.txt文件,但是如何编辑它允许用户选择编译器 - 比如

SET(MYVAR TRUE CACHE BOOL "Use intel compiler?")

稍后,如果设置了MYVAR变量,请执行add_includes() ..?您还可以使用一些包查找实用程序(CMAKE提供一些)来查找特定的编译器包含文件等。