我正在尝试创建一个简单的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标志?
答案 0 :(得分:0)
我知道出了什么问题。显然你不能在不同的行中添加标志。我应该做的事情如下:
set(CMAKE_CXX_FLAGS“-W -Wall -I ../ .. -lpthread -g -Iinclude -std = c ++ 11 -lz -lrt”)