cmake:Configure_file变量替换

时间:2016-05-12 16:01:25

标签: cmake

我正在使用cmake的PackageConfigHelpers'

configure_package_config_file(
        Config.cmake.in"
        "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
        INSTALL_DESTINATION
        ....
        PATH_VARS
        my_paths
)

如果my_path由多个路径组成,例如:

set(my_paths path1 path2)

配置文件最终只会以路径1为前缀,我最终会得到:

${PACKAGE_PREFIX_DIR}path1;path2.

导致path2无法定位。有没有办法解决这个问题,同时仍然使用PackageConfigHelpers提供的功能?

1 个答案:

答案 0 :(得分:0)

应将每条路径分配给自己的变量,并且应为PATH_VARS选项强制使用这些变量:

set(path1_var <...> CACHE ...)
set(path2_var <...> CACHE ...)

configure_package_config_file(
    "Config.cmake.in"
    "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
    INSTALL_DESTINATION
    ....
    PATH_VARS
    path1_var
    path2_var
)

每个变量都应在Config.cmake.in中用于特定类型的可交付成果。

来自configure_package_config_file的文档:

  

变量&lt; var1&gt;到&lt; varN&gt;作为PATH_VARS给出的是包含安装目的地的变量。对于它们中的每一个,宏将创建辅助变量PACKAGE_&lt; var ...&gt;。必须在FooConfig.cmake.in文件中使用这些辅助变量来设置安装位置。它们由CONFIGURE_PACKAGE_CONFIG_FILE()计算,因此它们始终相对于包的安装位置。