我试图在我的biicode块中使用功能。据我所知,这是目前向cmake询问特定c++标准版本的最佳方法,因为它将知道要添加到编译中的标志(如果有的话),如果正在使用的编译器不支持我们请求的特性,则会失败。
我在非常简单的CMakeLists.txt中添加了这一行(与biicode的博客中的boost示例没有任何变化):
target_compile_features(${BII_BLOCK_TARGET} PRIVATE cxx_auto_type)在运行bii构建时,会遇到以下错误:
CMake Error at bii_test/alchemist/blocks/sennin/deckbox_loader/CMakeLists.txt:13 (target_compile_features):
target_compile_features may only be set INTERFACE properties on INTERFACE
targets将cxx_auto_type设置为公共或私有范围具有完全相同的结果。
我希望避免使用标准和CXX_STANDARD_REQUIRED,因为第一个是软请求(如果请求的标准不受支持,cmake仍然允许我们尝试构建代码),第二个强制要求以某种方式请求完全支持整个被请求的标准(对于Visual,失败,因为没有这样的标志)。
发布于 2015-05-05 07:26:32
我对bii一无所知,但BII_BLOCK_TARGET可能是它提供的东西吗?你应该把它和target_link_libraries什么的一起用吗?
无论如何,尝试INTERFACE关键字。
target_compile_features(${BII_BLOCK_TARGET} INTERFACE cxx_auto_type)http://www.cmake.org/cmake/help/v3.2/manual/cmake-compile-features.7.html
http://www.cmake.org/cmake/help/v3.2/manual/cmake-buildsystem.7.html#transitive-usage-requirements
https://stackoverflow.com/questions/30042047
复制相似问题