相关疑难解决方法(0)

CMake:替换 INTERFACE 目标的编译标志

我需要将目标(仅标头库)/std:c++14的标志替换为. CMake 还不支持直接在 VS 中设置 C++17 标志(请参阅如何使用 CMake 在 VS2017 中启用 /std:c++17),因此我需要手动替换它。INTERFACE/std:c++17

但是,get_target_property(my_compile_flags mylib COMPILE_OPTIONS)要检索当前设置的标志列表,然后将 /std:c++14 替换为 /std:c++17 不起作用:

INTERFACE_LIBRARY 目标只能具有白名单属性。不允许使用属性“COMPILE_OPTIONS”。

但是,您可以通过target_compile_features(...)例如手动设置它们target_compile_options(mylib INTERFACE /std:c++17)。但后一个命令添加了标志,但没有删除/std:c++14.

该怎么做呢?

c++ cmake c++17

2
推荐指数
1
解决办法
4040
查看次数

标签 统计

c++ ×1

c++17 ×1

cmake ×1