开发者

CMake: how to add compiler flags to non-default compiler

开发者 https://www.devze.com 2022-12-11 02:44 出处:网络
Hello I want to build a project with intel compiler. With default gcc I usually run: cmake -DCMAKE_CXX_FLAGS=-I/some/path/path/to/project

Hello I want to build a project with intel compiler.

With default gcc I usually run:

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

And this works fine.

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

When I try to use non-default compiler it does not path CMAKE_CXX开发者_运维问答_FLAGS variable content to compiler at all.

How to fix this?

Correct Answer is:

  1. You need to specify the type of the CMAKE_CXX_FLAGS variable:

    -DCMAKE_CXX_FLAGS:STRING=-I/some/path
    
  2. You need to provide full path to C and C++ compilers:

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


The good way to do what you expect is to use:

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


Is there some reason that you can't add the include path (from your CMAKE_CXX_FLAGS) to your CMakeLists.txt file?

add_includes(/some/path)


I know you don't want to edit the CMakeLists.txt file, but what about editing it allowing the user to select the compiler -- something like

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

And later on, if MYVAR variable is set, do the add_includes()..? You can also use some package finding utilities (CMAKE provides some) to find the specific compiler include files, etc.

0

精彩评论

暂无评论...
验证码 换一张
取 消