相关疑难解决方法(0)

在项目中更改CMAKE_CXX_FLAGS

我在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 compiler-flags

40
推荐指数
4
解决办法
7万
查看次数

CMake交叉编译:忽略工具链文件中的C标志

我使用cmake进行交叉编译.在我的工具链文件中有一行

SET(CMAKE_C_FLAGS "-std=gnu99")
Run Code Online (Sandbox Code Playgroud)

此变量未再次在CMakeLists.txt中设置.

当我运行cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..此标志被忽略.

更详细:显示一行flags.cmakeC_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)

c flags cmake cross-compiling

17
推荐指数
2
解决办法
1万
查看次数

对于Cmake,您可以使用`add_compiler_flags()`命令修改发布/调试编译器标志吗?

在手册页中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).

c++ cmake

4
推荐指数
1
解决办法
4268
查看次数

标签 统计

cmake ×3

c ×1

c++ ×1

compiler-flags ×1

cross-compiling ×1

flags ×1