我在CMakeLists.txt中有以下内容:
project( Matfile )
SET ( CMAKE_CXX_FLAGS "-std=c++0x" )
set ( SOURCES
"foo.cpp"
"bar.cpp"
)
add_library(
Matfile
${SOURCES}
)
Run Code Online (Sandbox Code Playgroud)
您可能想象,我想要做的是使用标志-std = c ++ 0x编译我的C++源代码(我使用的是gcc,我需要C++ 11的功能).不幸的是,这不起作用,在我使用cmake生成makefile时,变量CMAKE_CXX_FLAGS完全无效.
如何在项目文件中设置此变量?
这似乎是一个非常愚蠢的问题,但我只花了不少于两个小时试图解决这个问题.
我使用cmake进行交叉编译.在我的工具链文件中有一行
SET(CMAKE_C_FLAGS "-std=gnu99")
Run Code Online (Sandbox Code Playgroud)
此变量未再次在CMakeLists.txt中设置.
当我运行cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..此标志被忽略.
更详细:显示一行flags.cmake空C_FLAGS =行.但在CMakeOutput.log我能找到一条线Build flags: -std=gnu99.
我发现第二次运行cmake ..(指定或不指定工具链文件)修复了这个问题.
但是为什么我第一次运行cmake时没有设置?
编辑:添加了MNWE
的CMakeLists.txt:
cmake_minimum_required(VERSION 2.6)
project(myproject)
SET(files src/main.c)
add_executable(myexec ${files})
Run Code Online (Sandbox Code Playgroud)
avr.cmake:
SET(CMAKE_SYSTEM_NAME Generic)
SET(CMAKE_C_COMPILER avr-gcc)
SET(CMAKE_C_FLAGS "-std=gnu99")
Run Code Online (Sandbox Code Playgroud) 在手册页中add_compile_options()我没有看到任何提及如何修改Release/Debug编译器标志.你可以add_compiler_options()用来修改Release/Debug编译器标志吗?如果有,怎么样?
如果不是,推荐的规范方法是修改发布/调试cmake变量[1],如下所述?
[1]即设置cmake变量CMAKE_ <LANG> _FLAGS_ <TYPE>(对于lang c/c ++,它将是:CMAKE_CXX_FLAGS_RELEASE,CMAKE_CXX_FLAGS_DEBUG,CMAKE_C_FLAGS_RELEASE,CMAKE_C_FLAGS_DEBUG).