cmake get find_包以查找包特定的变量
因此,我想创建一个C库,它的安装方式可以使它在cmake中使用cmake get find_包以查找包特定的变量,c,cmake,C,Cmake,因此,我想创建一个C库,它的安装方式可以使它在cmake中使用find_package函数的其他项目中易于使用。具体来说,我想要一个项目,比如说foo,可以像这样访问: find_package (foo-1.0 REQUIRED) message ("!-- foo found version \"${FOO_VERSION}\"") message ("!-- foo include path \"${FOO_INCLUDE_DIRS}\"") message ("!-- fo
find_package
函数的其他项目中易于使用。具体来说,我想要一个项目,比如说foo,可以像这样访问:
find_package (foo-1.0 REQUIRED)
message ("!-- foo found version \"${FOO_VERSION}\"")
message ("!-- foo include path \"${FOO_INCLUDE_DIRS}\"")
message ("!-- foo libraries \"${FOO_LIBRARIES}\"")
然后,这些变量可以用于其他cmake项目中的目标,如:
add_executable (example example.c)
target_include_directories (example PRIVATE "${FOO_INCLUDE_DIRS}")
target_link_libraries (example PRIVATE "${FOO_LIBRARIES}")
我的问题是:
find_package
查找(也就是需要什么目的地)FOO_库
,以便find_包
函数在调用find_包
的项目中公开它们我知道怎么做了。基本上,您必须在文件中包含
.cmake.in,作为配置文件的模板和最终包的配置版本文件find_package
将在以下位置查看cmake配置和版本文件:
${CMAKE_INSTALL_PREFIX}/include/${LIBKOF_NAMED_VERSION}
${CMAKE_INSTALL_PREFIX}/lib/${LIBKOF_NAMED_VERSION}
其中LIBKOF\u NAMED\u VERSION
是包文件夹,例如foo-1.2
libkof
是我的包的名称,您可以在下面看到这是如何完成的:
# This cmake is responsible for installing cmake config and other version
# files.
# This sets the package specific versioning
set(LIBKOF_MAJOR_VERSION 1)
set(LIBKOF_MINOR_VERSION 0)
set(LIBKOF_PATCH_VERSION 0)
# This allows easy creation of the directories within /usr/local or another install
# prefix
set(LIBKOF_NAMED_VERSION libkof-${LIBKOF_MAJOR_VERSION}.${LIBKOF_MINOR_VERSION})
# These statements will create the directories needed for installs
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${LIBKOF_NAMED_VERSION})
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/${LIBKOF_NAMED_VERSION})
# This tracks the name of the in files used to generate the package cmake files
set(LIBKOF_CONFIG_FILE libkof-config.cmake.in)
set(LIBKOF_CONFIG_VERSION_FILE libkof-config-version.cmake.in)
# The configure_file statements will exchange the variables for the values in this cmake file.
configure_file(${LIBKOF_CONFIG_FILE} libkof-config.cmake @ONLY)
configure_file(${LIBKOF_CONFIG_VERSION_FILE} libkof-config-version.cmake @ONLY)
# Installs to the output locations so they can be found with find_package()
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libkof-config-version.cmake DESTINATION include/${LIBKOF_NAMED_VERSION})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libkof-config.cmake DESTINATION lib/${LIBKOF_NAMED_VERSION})
您询问如何在CMake中打包项目,但您的代码没有显示打包尝试。你读过关于这个主题的一些教程吗?例如,CMake官方网站上的一个:@Tsyvarev谢谢,我不知道有关于包装的具体指南,我以前只看过每个功能指南