在CMakeLists.txt的安装功能中使用.cmake文件有什么用
What is the use of .cmake files in install function of CMakeLists.txt?
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_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
没有?为什么在上述情况下使用它?
您可能会发现这里的介绍性描述很有帮助。
<Package>Config.cmake
文件是程序包配置文件。它们对于提供有关已安装程序包的最小信息集非常有用,因此程序包的使用者可以在其CMake项目中轻松使用它。作为一个基于CMake的项目的包维护者,我们强烈鼓励(坦率地说,希望(提供这样一个文件,因为这是其他人将您的库集成到他们的项目中最有效的方式。
软件包的消费者通常会使用find_package
来查找已安装的软件包:
find_package(SomePackage REQUIRED)
find_package
配置模式的搜索过程将查找以下包配置文件之一,以将SomePackage
拉入CMake项目:
SomePackageConfig.cmake
somepackage-config.cmake
通过提供其中一个文件(install
命令支持(,您可以让其他人在自己的CMake项目中轻松使用您的包。
CMake联合维护人员Craig Scott在2019年CppCon上进行了深入的演示,提供了有关该主题的丰富信息。
<name>Config.cmake
或<lower-case-name>-config.cmake
文件来查找库及其元信息。
当有人想在他们的应用程序或库中链接pipeline_controller
库时,可以使用find_package(pipeline_controller)
来完成。find_package
内部搜索并使用pipeline_controllerConfig.cmake
或pipeline_controller-config.cmake
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- cmake 可以包含具有头文件和库文件但没有 .cmake 文件的库吗?
- 隐蔽的 gcc 参数到 CMake 文件
- 如何在Windows上链接动态构建的cmake文件
- C++ : "undefined reference to"可能是因为CMake文件
- 更改 Cmake 文件以从源代码编译依赖项,而不是使用 FIND_PACKAGE
- 从 cmake 文件运行 npm 命令
- 我被困在尝试克隆需要 cmake 文件和依赖项的 git 存储库中
- 如何将G 和GTEST集成到一个CMAKE文件中
- 当我构建和编译我的C 项目时,没有通过我的CMake文件找到正确的C 库,我在做什么错
- 我如何配置我的cmake文件以与Google Test和CTEST一起使用
- 如何从现有的生成文件创建 CMake 文件?
- 如何在 c++ 中使用单例模式时编写 cmake 文件
- 如何为模块化项目正确创建 CMake 文件
- 如何使用jhbuild没有CMAKE文件来构建图书馆
- 构建块的Cmake(文件夹包含源)
- 在cmake中,cmake文件夹和CMakeLists.txt可以位于不同的文件夹中
- cmake 文件生成 -- 一种更优雅的选择
- 从CMake文件生成Embarcadero项目文件