cmake - 是否可以在 cmake 中获取目标文件名?
问题描述
我正在尝试使用以下方法将多个目标复制到特定的构建目录中add_custom_command
:
get_filename_component(buildDirRelFilePath "libDetector_dynamic.so"
REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
add_custom_command(
TARGET Detector_dynamic POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${buildDirRelFilePath}
${CMAKE_INSTALL_PREFIX}/lib/libDetector_dynamic.so)
非常希望简单地删除所有引用正在构建的目标的硬编码值,而是使用 CMake 的变量,该变量会为每个目标自动更改。
解决方案
所以使用生成器表达式。
add_library(Detector_dynamic ...)
add_custom_command(
TARGET Detector_dynamic POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
$<TARGET_FILE:Detector_dynamic>
${CMAKE_INSTALL_PREFIX}/lib/)
我认为不需要按名称引用文件名。对我来说,看起来你应该使用CMAKE_LIBRARY_OUTPUT_DIRECTORY
或者只是编写install
脚本。
推荐阅读
- python - pyTelegramBot 装饰器未检测到更新
- python - 我们如何在使用 python 的滚动平均期间拒绝包含异常值的窗口?
- algorithm - Gnome 排序的优缺点是什么
- javascript - 在反应中将axios响应传递给子组件
- javascript - 根据元素中的特定关键字计算数组中的项目
- c# - 是否可以在图表中创建自定义 X 轴?
- c# - 为什么 TimeZoneInfo.IsValidTime() 会为 DateTimeKind.Local 提供意外结果?
- python - 有什么办法可以从桌面背景获取 RGB 信息?
- regex - 如何在 laravel 中验证波斯蛞蝓?
- flutter - 如何在 Flutter Web 中获取本地 IP