【发布时间】:2016-10-18 03:22:55
【问题描述】:
我想在每次构建之前运行的二进制文件的示例源代码,每个 add_executable 一次:
#include <stdio.h>
int main(int argc, char *argv[]) {
for(int i=0; i<argc; ++i)
printf("argv[%d] = %s\n", i, argv[i]);
fclose(fopen("foo.hh", "a"));
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(foo_proj)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
set(SOURCE_FILES main.cpp)
# ---- this line changes ----
add_executable(foo_proj ${SOURCE_FILES})
尝试:
add_custom_target(create_foo_hh COMMAND /tmp/bin/create_foo_hh)
add_dependencies(${SOURCE_FILES} create_foo_hh)
错误:无法将目标级别的依赖项添加到不存在的目标“main.cpp”。 add_dependencies 适用于由 add_executable、add_library 或 add_custom_target 命令创建的顶级逻辑目标。如果要添加文件级依赖项,请参阅 add_custom_target 和 add_custom_command 命令的 DEPENDS 选项。
execute_process(COMMAND /tmp/bin/create_foo_hh main.cpp)
没有错误,但没有创建 foo.hh。
如何自动运行此命令?
【问题讨论】: