CMake教程-Step3(添加库的使用要求)

https://cmake.org/cmake/help/latest/guide/tutorial/index.html

添加库的使用要求(步骤3)

使用要求可以更好地控制库或可执行文件的链接并包含行,同时还可以更好地控制CMake内部目标的传递属性。 利用使用需求的主要命令是:

  • target_compile_definitions()

  • target_compile_options()

  • target_include_directories()

  • target_link_libraries()

让我们从添加库(第2步)中重构代码,以使用现代CMake的使用需求方法。 我们首先声明,链接到MathFunctions的任何人都需要包括当前源目录,而MathFunctions本身不需要。 因此,这可以成为接口使用要求。

请记住,INTERFACE表示消费者需要而生产者不需要的东西。 将以下行添加到MathFunctions / CMakeLists.txt的末尾:

target_include_directories(MathFunctions
          INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}
          )

现在,我们已经指定了MathFunction的使用要求,我们可以安全地从顶级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进行构建。 从构建目录。

实验代码:https://download.csdn.net/download/yufm/12673684

 

你可能感兴趣的:(CMake)