是否可以target_compile_options()仅用于C++文件?我想将它用作目标,该目标用作其他应用程序的依赖项,以便库可以将其编译器标志传播到这些应用程序.但是,如果某些标志-std=c++14与C或ObjC文件一起使用,则会导致构建失败.
我已经读过,我应该CXX_FLAGS只将这些标志添加到C++文件中,但这不会(自动)通过cmake的包系统传播.
Flo*_*ian 17
解
你可以用生成器表达式做到这一点:
target_compile_options(MyLib PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-std=c++14>)
Run Code Online (Sandbox Code Playgroud)
替代
但在这种特殊情况下,更多独立于平台的方式就是使用它target_compile_features().我不确定您使用的是哪种编译器功能,因此以下只是一个示例:
target_compile_features(MyLib PUBLIC cxx_explicit_conversions)
Run Code Online (Sandbox Code Playgroud)