我对cmake很新,我尝试使用mongodb驱动程序来使用本教程:https://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/。教程说您需要C ++ 11,所以我尝试了使用CXX_STANDARD属性的推荐方法。但它没有用。我终于放弃并使用add_definitions()并且它有效!
cmake文件显示了我尝试过的两种方法。即,注释中的add_definitions和set属性方法(我先尝试但无效)。
现在可以与add_definitions()
一起使用,但在任何地方我都会建议使用CXX_STANDARD或让cmake通过请求C ++ 11功能自动使用C ++ 11。
那么,由于某些原因,这会成为一个问题吗?为什么第一次没有工作呢?
我的cmake文件:
cmake_minimum_required(VERSION 3.2)
project(testproj CXX)
file(GLOB SRC src/*.cpp)
add_library(testproj SHARED ${SRC})
add_definitions(--std=c++11)
#set(TARGET testproj PROPERTY CXX_STANDARD 11)
#set(TARGET testproj PROPERTY CXX_STANDARD_REQUIRED ON)
# include directories
include_directories(/usr/local/include/mongocxx/v_noabi)
include_directories(/usr/local/include/libmongoc-1.0)
include_directories(/usr/local/include/bsoncxx/v_noabi)
include_directories(/usr/local/include/libbson-1.0)
# library path
link_directories(/usr/local/lib)
target_link_libraries(testproj mongocxx bsoncxx)
答案 0 :(得分:-1)
最好为整个项目定义c ++ 11标志。
为此,您可以使用变量CMAKE_CXX_FLAGS
将其设置为全局标志,如下所示:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
由于这是一次全球通话,我建议您将它放在project
行的下方。