作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个宏来创建链接
makeLink($BUILD_ROOT/lib somewhere/somelibrary.so makelinks)
这样做的目的是使一个完整的构建包含一个类似于开发人员安装的目录结构,包含指向实际产品的链接的 bin、include 和 lib 目录。
macro(makeLink src dest target)
add_custom_command(TARGET ${target} PRE_BUILD
COMMAND ln -sf ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}")
endmacro()
或者:
macro(makeLink src dest target)
add_custom_command(TARGET ${target} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}")
endmacro()
现在我明白了 create_symlink 的要点是在平台不理解链接的情况下是可移植的。然而,它似乎在功能上不完整。 ln 有几种不同的用例
最佳答案
通常 create_symlink
仅在构建目录中用于链接到主要在源目录中的东西。鉴于这一点和所需的平台独立性,一切都很好。
如果您需要更多,则 create_symlink
提供,很有可能您以非预期的方式使用 CMake,或者 CMake 不是您任务的正确工具。
CMake 提供的内容,如您总结的“如果目标不存在且源存在则创建链接。如果源不存在则失败”就是您所需要的。您知道创建了哪个文件,因此创建链接而不知道此链接是否已存在或源是否存在不应发生。为什么在您刚刚创建链接时覆盖它?
在您的情况下,add_custom_command
是正确的工具。只需更换 PRE_BUILD
来自 POST_BUILD
.
关于CMake:create_symlink 与 ln,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34876602/
我有一个宏来创建链接 makeLink($BUILD_ROOT/lib somewhere/somelibrary.so makelinks) 这样做的目的是使一个完整的构建包含一个类似于开发人员安装
这段代码有问题: #include #include namespace bfs = boost::filesystem; int main(int argc, char **argv) {
我是一名优秀的程序员,十分优秀!