原文作者:
发布时间:
使用要求允许更好地控制一个库或可执行文件的链接和包含行,同时也给CMake内部的目标的过渡属性提供了更多的控制。利用用法要求的主要命令有:
- target_compile_definitions()
- target_compile_options()
- target_include_directories()
- target_link_libraries()
让我们从添加库(步骤2)中重构我们的代码,使用现代CMake的使用需求方法。我们首先声明,任何人链接到MathFunctions都需要包含当前的源目录,而MathFunctions本身不需要。所以这可以成为一个INTERFACE
的使用要求。
记住INTERFACE
是指消费者需要而生产者不需要的东西。在MathFunctions/CMakeLists.txt
的末尾添加以下几行。
target_include_directories(MathFunctions
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}
)
现在我们已经指定了 MathFunctions
的使用要求, 我们可以安全地从顶层的 CMakeLists.txt 中删除对 EXTRA_INCLUDES 变量的使用。
if(USE_MYMATH)
add_subdirectory(MathFunctions)
list(APPEND EXTRA_LIBS MathFunctions)
endif()
还有这里。
target_include_directories(Tutorial PUBLIC)
"${PROJECT_BINARY_DIR}"
)
完成后,运行 cmake 可执行文件或 cmake-gui 来配置项目,然后用你选择的构建工具或使用 cmake --build .
从构建目录中构建它。
通过www.DeepL.com/Translator (免费版)翻译