2013-03-21 50 views
3

我需要将构建库的本地名称(libfoo.so或foo.dll)传递给add_custom_command。如何在cmake上获得图书馆全名?

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

财产LOCATION有它,但具有完整的路径。 PROPoerty OUTPUT_NAME不返回任何内容。

+0

add_custom_command()'哪部分需要它?生成器表达式$ $ TARGET_FILE:tgt>可以帮助你吗? – Angew 2013-03-21 15:42:20

+0

论证部分。什么是生成器表达式?我已经尝试了您的提案,并将其展开为完整路径,而我只需要文件名:S – quimnuss 2013-03-21 16:01:04

回答

3

您可以使用生成器表达式$<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 
    # ... 
) 

更多关于生成器表达式,请参阅documentation of add_custom_command()(对于CMake的2.X)或到专用generator expression documentation(对于CMake的3+)。

+0

真棒,谢谢。 – quimnuss 2013-03-21 16:15:01