首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为qcc编译器获取cmake生成-std=c++14标志

如何为qcc编译器获取cmake生成-std=c++14标志
EN

Stack Overflow用户
提问于 2019-08-22 18:38:19
回答 1查看 2.3K关注 0票数 2

我正在尝试用cmake交叉编译一些QNX中微子的c++库。在CMakeLists.txt文件中,我指定CMAKE_CXX_STANDARD 14是必需的,但生成的编译器命令行不包含-std=c++14选项。

代码语言:javascript
复制
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

我尝试过使用目标编译特性:

代码语言:javascript
复制
target_compile_features(my_library PRIVATE cxx_std_14)

但这给了我以下错误:

代码语言:javascript
复制
CMake Error at CMakeLists.txt:53 (target_compile_features):
    target_compile_features no known features for CXX compiler

    "QCC"

    version 5.4.0.

当我使用check_cxx_compiler_flag功能时,它似乎认识到了这个选项:

代码语言:javascript
复制
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-std=c++14 CXX14_SUPPORT)
if(CXX14_SUPPORT)
  message("c++14 support found")
else()
  message("c++14 unsupported")
endif()

这将输出消息

代码语言:javascript
复制
c++14 support found

手动运行qcc,它可以很好地接受-std=c++14选项,并且使用std::make_unique的代码也可以很好地编译。

同样使用本机编译器(Ubuntu 18.04,gcc),使用cmake生成的makefile一切都很好。make VERBOSE=1显示以下命令行(我删除了一些目录):

代码语言:javascript
复制
/usr/local/bin/c++  -Dshm_transfer_EXPORTS -I...  -fPIC   -std=gnu++14 -o CMakeFiles/shm_transfer.dir/src/SharedMemoryTransfer.cpp.o -c .../SharedMemoryTransfer.cpp

与使用qcc工具链的命令行相反:

代码语言:javascript
复制
.../qnx700/host/linux/x86_64/usr/bin/qcc -lang-c++ -Vgcc_ntox86_64 -lang-c++ -Dshm_transfer_EXPORTS -I...  -fPIC   -o CMakeFiles/shm_transfer.dir/src/SharedMemoryTransfer.cpp.o -c .../SharedMemoryTransfer.cpp

我原本期望cmake命令能够识别出qcc支持-std=c++14选项,并根据CMAKE_CXX_STANDARD设置生成相应的命令行。

EN

回答 1

Stack Overflow用户

发布于 2019-08-22 19:26:29

使用

代码语言:javascript
复制
set_property(TARGET ${PROJECT_NAME} PROPERTY LINKER_LANGUAGE CXX)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)

。使用此方法,您可以将编译器设置粘贴到目标上,同时鼓励使用全局标志,并可被其他cmake使用者覆盖。这就是为什么废弃的set(CMAKE_CXX_STANDARD 14)不能帮助你的原因:我看不到你的完整CMakeLists.txt,我打赌你有很多子文件夹和其他目标,这可能会重置CMAKE_CXX_STANDARD本身。还要确保CMake命令的顺序。

如果你愿意,你可以用my_library替换${PROJECT_NAME}

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57607466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档