【发布时间】:2019-05-05 06:50:20
【问题描述】:
我正在使用 Cmake 和 POCO 构建一个项目,我正在使用 vcpkg 来管理我在 ubuntu 中的依赖项,所以起初这就是我的 cmake 文件的样子
cmake_minimum_required(VERSION 3.8)
project(web)
set(CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Poco COMPONENTS Net Util PDF SQL XML REQUIRED)
add_executable(web "main.cpp")
target_link_libraries(web PRIVATE Poco::Net Poco::PDF Poco::SQL
Poco::XML)
但后来我发现这是命令行中发生的事情
/usr/bin/g++-7 -DPOCO_ENABLE_CPP14 -DPOCO_HAVE_FD_EPOLL -
DPOCO_STATIC -DPOCO_UNBUNDLED -D_DEBUG -D_FILE_OFFSET_BITS=64 -
D_LARGEFILE64_SOURCE -D_REENTRANT -D_THREAD_SAFE -
D_XOPEN_SOURCE=500 -isystem /home/pius/vcpkg/installed/x64-
linux/include -g -std=gnu++17 -std=gnu++14 -MD -MT
CMakeFiles/web.dir/main.cpp.o -MF CMakeFiles/web.dir/main.cpp.o.d -
o
POCO 正在添加一个新定义 -DPOCO_ENABLE_CPP14,它默认将 -std=gnu++14 传递给 gcc,因为我的代码依赖于 C++17 string_view 我想要 C++17,我试图编辑我的 CMake文件看起来像这样
cmake_minimum_required(VERSION 3.8)
project(web)
find_package(Poco COMPONENTS Net Util PDF SQL XML REQUIRED)
add_executable(web "main.cpp")
set(CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_definitions(-std=gnu++17)
remove_definitions(-DPOCO_ENABLE_CPP14 -std=gnu++14)
target_link_libraries(web PRIVATE Poco::Net Poco::PDF Poco::SQL
Poco::XML)
但是 Cmake 仍然产生与以前相同的效果,remove_definitions 命令不起作用,无论如何我可以覆盖 POCO 强加的默认要求并改用我自己的吗?谢谢
【问题讨论】: