C++ .cmake文件在CMakeLists.txt的安装功能中有什么用途?

C++ .cmake文件在CMakeLists.txt的安装功能中有什么用途?,c++,cmake,compilation,cmakelists-options,C++,Cmake,Compilation,Cmakelists Options,CMakeLists.txt ... add_library( ${PROJECT_NAME} SHARED src/run_pipeline.cpp ) target_link_libraries( ${PROJECT_NAME} ) install( TARGETS ${PROJECT_NAME} DESTINATION lib ) install( FILES ${PROJECT_NAME}Config.cmake DESTINATION lib/cmake/${PROJECT_NAME

CMakeLists.txt

...
add_library( ${PROJECT_NAME} SHARED src/run_pipeline.cpp )

target_link_libraries( ${PROJECT_NAME} )
install( TARGETS ${PROJECT_NAME} DESTINATION lib )
install( FILES ${PROJECT_NAME}Config.cmake DESTINATION lib/cmake/${PROJECT_NAME} )
${PROJECT\u NAME}Config.cmake
文件是:

add_library( pipeline_controller STATIC IMPORTED)

find_library( PIPELINE_CONTROLLER_LIBRARY_PATH pipeline_controller HINTS "${CMAKE_CURRENT_LIST_DIR}/install/lib/")

set_target_properties( pipeline_controller PROPERTIES IMPORTED_LOCATION "${PIPELINE_CONTROLLER_LIBRARY_PATH}")
在哪些情况下,我们需要单独的.cmake文件?
.cmake
提供了哪些
CMakeLists.txt
没有提供的功能?为什么在上述情况下使用它?

Config.cmake
-Config.cmake
文件用于查找库及其元信息


当有人想在其应用程序或库中链接
管道\控制器
库时,可以使用
查找包(管道\控制器)
。在内部
find_package
搜索并使用
pipeline\u controllerConfig.cmake
pipeline\u controller-config.cmake
您可能会发现介绍性描述很有帮助

Config.cmake
文件是文件。它们对于提供有关已安装软件包的最小信息集非常有用,因此软件包的消费者可以轻松地在其CMake项目中使用它。作为基于CMake的项目的包维护者,强烈鼓励(坦率地说,期望)您提供这样的文件,因为这是其他人将您的库集成到他们的项目中的最有效的方法

软件包的使用者通常会使用以下命令查找已安装的软件包:

find_package(SomePackage REQUIRED)
find_package
的搜索过程将查找以下包配置文件之一,以将
SomePackage
拉入CMake项目:

  • SomePackageConfig.cmake
  • somepackage config.cmake
通过提供这些文件中的一个(如
install
命令所支持的),您可以让其他人在他们自己的CMake项目中轻松使用您的包


CMake联合维护人员Craig Scott在提供有关此主题的大量信息时作了深入介绍。

您是否阅读过创建软件包的相关内容?他们提供了一个使用
grampingstatsconfig.cmake
config文件的示例。@Tsyvarev我不知道这一点。我会读的。如果你能在一段中解释要点作为答案,我将不胜感激。非常感谢。那么,只有当我们将项目转换为库时才能使用它?如果我们从项目中生成一个可执行文件,则不需要.cmake?如果您希望您的库被使用cmake的其他库或应用程序使用,则需要该文件。