C++ .cmake文件在CMakeLists.txt的安装功能中有什么用途?
CMakeLists.txtC++ .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
...
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的其他库或应用程序使用,则需要该文件。