我正在使用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
获取二进制文件的路径?
答案 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 ...)