在INSTALL中使用RENAME(TARGETS ...)

时间:2014-04-29 07:19:40

标签: cmake

我对CMake很新,所以请保持温和。

我有两个目标需要调用internal才能在运行时进一步使用。现在,当我打电话

set_target_properties(target1 PROPERTIES OUTPUT_NAME internal)
install(TARGETS target1 DESTINATION some/where/target1dir)

set_target_properties(target2 PROPERTIES OUTPUT_NAME internal)
install(TARGETS target2 DESTINATION some/where/target2dir)

在调用cmake时,两个目标中的一个将被另一个目标覆盖,因此在构建文件夹中执行nmake时,同一文件将被复制到some/where/target1some/where/target2

我考虑使用RENAME选项将构建文件的临时名称更改为任意名称,但在使用TARGETS关键字时不允许使用此选项。

你知道如何解决这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我通过将一个CMake文件添加到源目录来解决这个问题,该目录重命名文件,使用目标的输出名称和重命名名称配置该文件,然后添加一个目标属性POST_INSTALL_SCRIPT配置的cmake文件的路径。

由于缺乏可用于确定某些目录的变量的知识(例如devel文件夹的位置),内部仍有许多内容是硬编码的,整个解决方法看起来有点矫枉过正,很难看,所以,如果你知道更好的策略,请告诉我:)