获取cmake可执行路径以在自定义命令上运行它
Getting a cmake executable path to run it on a custom 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> ...)
参见:
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 ...)
相关文章:
- 使用VS Code和CMake Tools运行自定义命令
- 运行命令 "rosbag play example.bag" 时出错。找不到与插件 rosbag/NoEncryptor 对应的库
- 无法在 geany 上运行代码。无法执行构建命令
- 通过窗口从C++代码运行 WSL 命令
- 如何使用传递给编译器的相同参数在 cmake 中运行命令?
- 有没有办法让我编写一个可以在Windows和Linux上运行的命令行游戏?
- 使用 system() 函数在C++程序中运行 cmd 命令
- 程序运行,但文件无法打开.C++中的命令行
- 在 c++ 中运行命令,然后在该程序中运行命令
- 使用 Qt 运行 Windows PowerShell 命令
- 终端命令在程序运行后自动打开图形
- 使用 (cin) 用户输入将其粘贴到 std::system 中,并在另一个终端中运行带有输入的命令
- 线程保持运行并执行命令
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- C++程序编译器在使用g++命令编译后自动运行exe文件
- 如何在Qt应用程序中通过终端命令运行分离的应用程序
- 在 中执行行命令C++运行而不返回预期结果
- 生成文件:在全局变量初始化之前通过"make all"命令运行 bash 脚本
- 将XXD作为自定义命令运行