CMake不使用add_compile_options应用编译选项

Dav*_*evy 1 g++ cmake

我试图使用带有add_compile_options的以下编译选项的cmake: add_compile_options(-pipe -O2 -std=c++98 -W -Wall -pedantic)

但是它似乎并没有在编译过程中实际使用。

make -n | grep pedantic 不返回任何东西

仅供参考,我的cmake命令及其返回内容:

cmake -G"Unix Makefiles" -DARCH:STRING=x86 -Bosef -H. -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++
-- The C compiler identification is GNU 4.8.3
-- The CXX compiler identification is GNU 4.8.3
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- cmake run for linux x86
-- Configuring done
-- Generating done
-- Build files have been written to: /home/davidlevy/WS/LC4/main/osef
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能实际应用这些选项?

PS:我注意到它们未应用,因为make不会输出单个警告

编辑:如果相反我使用

set (
  CMAKE_CXX_FLAGS
  "${CMAKE_CXX_FLAGS} "
  "${CMAKE_CXX_FLAGS} -pipe -O2 -std=c++98 -W -Wall -pedantic"
)
Run Code Online (Sandbox Code Playgroud)

制作确实/usr/bin/g++ ; -pipe -O2 -std=c++98 -W -Wall -pedantic -I ENDOFTHECOMMAND我不知道这是否; 来自

Flo*_*ian 6

add_compile_options()确实附加到COMPILE_OPTIONS目录属性,并作为命令COMPILE_OPTIONS目标的所有属性的默认属性。add_compile_options()

CMAKE_CXX_FLAGS适用于当前所有目标的区别CMakeLists.txt

因此,请确保add_compile_options()命令位于相关的/ 之前add_library()add_executable

add_compile_options()文档:

将当前目录中及以下目标的选项添加到编译器命令行中,这些选项在调用此命令添加。

参考文献