Skip to main content
Version: 1.1.1

教程: 导出项配置

该页面内容为kmcmake导出cmake target 对象。 默认情况,这个文件不需要配置,kmcmake已经提供了默认的配置。

在kumo体系中,为了调用这更加方便,通常会导出该项目的依赖 设置为${PROJECT_NAME}_DEPS_LIBRARIES以及 ${PROJECT_NAME}_LINK_LIBRARIES以及 为方便上层应用直接调用,而不必再为本项目进行依赖校验。

warning

如果您并不关注这项优化,可以忽略本页面内容。

导出 target

导出对象的配置文件为cmake/${project-name}_config.cmake.in

原始为:


@PACKAGE_INIT@

include ("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")

set(@PROJECT_NAME@_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
set(@PROJECT_NAME@_VERSION_MINOR @PROJECT_VERSION_MINOR@)
set(@PROJECT_NAME@_VERSION_PATCH @PROJECT_VERSION_PATCH@)
set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@)
set(@PROJECT_NAME@_INCLUDE_DIR ${PACKAGE_PREFIX_DIR}/include)

添加依赖项

已本项目依赖turbo为例。假设本项目名为hero,生成的库为herolib


@PACKAGE_INIT@

include ("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")

set(@PROJECT_NAME@_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
set(@PROJECT_NAME@_VERSION_MINOR @PROJECT_VERSION_MINOR@)
set(@PROJECT_NAME@_VERSION_PATCH @PROJECT_VERSION_PATCH@)
set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@)
set(@PROJECT_NAME@_INCLUDE_DIR ${PACKAGE_PREFIX_DIR}/include)

find_pacakge(turbo REQUIRED)
set(@PROJECT_NAME@_DEPS_LIBRARIES turbo::turbo_static)
set(@PROJECT_NAME@_LINK_LIBRARIES turbo::turbo_static @PROJECT_NAME@::herolib_static)

调用无需知道hero依赖那些库,也就是原则上调用者并不关心hero是否依赖turbo

warning

@PROJECT_NAME@_LINK_LIBRARIES 不要包含系统库!