Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取cmake可执行路径以在自定义命令上运行它_C++_Cmake - Fatal编程技术网

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

C++ 获取cmake可执行路径以在自定义命令上运行它,c++,cmake,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”中硬编码二进制文件的路径是错误的。难道没

我正在使用
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> ...)
见:


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

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

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