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

Getting a cmake executable path to run it on a custom command

本文关键字:命令 运行 自定义 cmake 可执行 路径 获取      更新时间:2023-10-16

我正在使用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获得二进制文件的路径吗?

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

参见:

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

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

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

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