获取cmake可执行文件路径以在自定义命令上运行它

时间:2014-11-02 19:34:40

标签: c++ cmake

我正在使用add_executable(foo sources.cpp)创建一个可执行文件然后我希望有一个运行foo的目标,所以现在我这样做:

add_custom_target(run_foo 
   COMMAND ${CMAKE_BINARY_DIR}/test/foo 
   DEPENDS foo 
   WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)

它现在有效,但我觉得我通过在" COMMAND"中硬编码二进制路径来做错了。是不是有办法从foo获取二进制文件的路径?

2 个答案:

答案 0 :(得分:1)

add_custom_target(COMMAND $<TARGET_FILE:foo> ...)

请参阅:

http://www.cmake.org/cmake/help/v3.0/manual/cmake-generator-expressions.7.html

答案 1 :(得分:0)

实际上,你甚至不需要生成器表达式:) 至少/ w modern CMake

  

如果COMMAND指定了可执行目标名称(由add_executable()命令创建),它将自动替换为在构建时创建的可执行文件的位置。

add_executable(foo ...)
add_custom_target(COMMAND foo ...)