如何在 cmake 上获取库的完整本机名称?

qui*_*uss 7 cmake

我需要将构建库的本机名称(libfoo.so 或 foo.dll)传递给 add_custom_command。

如何获取目标的完整库名称?

该属性LOCATION具有它,但具有完整路径。属性 OUTPUT_NAME 不返回任何内容。

Rei*_*ica 8

您可以使用生成器表达式$<TARGET_FILE_NAME:tgt>,其中tgt是目标的逻辑 CMake 名称。

例子:

add_library(myLib a.cpp)
add_custom_command(
  OUTPUT someOutput
  COMMAND myProcessor --input $<TARGET_FILE_NAME:myLib> --output someOutput
  # ...
)
Run Code Online (Sandbox Code Playgroud)

更多关于生成器表达式,请参阅的文档add_custom_command()(对于CMake的2.X)或到专用发电机表达文档(对于CMake的3+)。