【发布时间】:2015-09-11 19:58:34
【问题描述】:
我正在尝试制作一个简单的 cmake 文件来为我的项目生成一个 makefile。
现在,我必须先生成一些 .o 文件,然后编译主脚本。
我使用了一些 std 11 函数,所以我需要定义那个标志。
我的 CMakeList.txt 文件如下所示:
cmake_minimum_required(VERSION 2.8)
project(P)
#C++ compiler
set(CMAKE_CXX_COMPILER_INIT g++)
#Compiler flags config
set(CMAKE_CXX_FLAGS "-W")
set(CMAKE_CXX_FLAGS "-Wall")
set(CMAKE_CXX_FLAGS "-I../..")
set(CMAKE_CXX_FLAGS "-lpthread")
set(CMAKE_CXX_FLAGS "-g")
set(CMAKE_CXX_FLAGS "-Iinclude/")
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_FLAGS "-lz")
set(CMAKE_CXX_FLAGS "-lrt")
set(CMAKE_CXX_STANDARD 11)
set_source_files_properties(a.c PROPERTIES LANGUAGE CXX)
add_library(A OBJECT a.h a.c)
set_source_files_properties(b.cpp PROPERTIES LANGUAGE CXX)
add_library(B OBJECT b.h b.cpp)
add_executable(P p.cpp $<TARGET_OBJECTS:A> $<TARGET_OBJECTS:B>)
现在,发生的情况是,当我运行 makefile 时,编译器给我一个 b.cpp 错误。它说其中一个函数未定义,我知道该错误是因为未使用标准 11 编译.
如何告诉 cmake 在编译目标文件时添加 std=c++11 标志?
【问题讨论】: