CMAKE MAKE库需要CXX标准
CMake make library require cxx standard
我尝试使我的库目标依赖于C 14。我该如何实现与我的库目标链接的目标,也取决于C 14?
我尝试使用:
add_library(lib SHARED ${FILES})
target_compile_options(lib INTERFACE CXX_STANDARD 14)
这可以构建库,但是当我尝试使用lib
C 14编译其他目标时。
我知道,还有其他方法,但我无法让它们工作。即有:
set_target_properties()
这样做的原因是,库标头使用广义lambda捕获和模板别名(例如std::remove_reference_t
和类似),这些别名自C 14。
您要寻找的内容(cmake版本> = 3.8)如下:
target_compile_features(lib PUBLIC cxx_std_14)
或,使用CMAKE版本以上3.1,通过明确指定所需的功能,F.I。:
target_compile_features(lib PUBLIC cxx_alias_templates)
您使用的语法对于设置所需标准是不正确的。另外,使用PUBLIC
代替INTERFACE
,因为您也想使用C 14编译库本身。
文档中的更多详细信息。
相关文章:
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 标准库类型的赋值运算符的引用限定符
- 标准是否严格定义了该程序应该如何编译?
- 如何从Windows应用程序输出到标准?
- 安全到标准:移动会员?
- 如何正确将字符串转换为标准::时间::system_clock::time_point?
- 这是否符合C++标准:双响双响,例如!!(-0.0).
- 标准::变体的赋值运算符
- 捕获标准输出以压缩并使用 CTRL-C 中断会给出损坏的 zip 文件
- CMAKE MAKE库需要CXX标准
- Cxx-prettyprint(用于标准容器)在命名空间std中定义了它的输出操作符——这违反了标准吗?