我正在开发一个C ++项目,我想在build上执行一个脚本来生成一些文件。我对CMake不太熟悉,所以我需要一些帮助。
通过脚本我的意思是项目中的.cpp文件。
我设法获得以下内容:
set(PrecisionCommand
${CMAKE_SOURCE_DIR}/src/main/matlab/matlabprecision.cpp
)
set(precision_output_files
${CMAKE_SOURCE_DIR}/work/variables.txt
)
add_custom_command(
OUTPUT ${precision_output_files}
COMMAND ${PrecisionCommand}
COMMENT "Running ${PrecisionCommand}"
)
add_custom_target(allocate_generate DEPENDS ${precision_output_files})
现在发生的是matlabprecision.cpp文件正在文本编辑器中打开,而不是被执行。我该如何解决这个问题?
答案 0 :(得分:1)
由于.c
文件不是脚本而是源文件,因此无法直接执行它。但是,您可以先将其编译为可执行文件:
add_executable(PrecisionCommand ${CMAKE_SOURCE_DIR}/src/main/matlab/matlabprecision.cpp)
然后运行该可执行文件:
add_custom_command(
OUTPUT ${precision_output_files}
COMMAND PrecisionCommand
COMMENT "Running PrecisionCommand"
)
注意, COMMAND 选项使用目标名称来运行可执行文件。 CMake了解这种用法并且:
有关add_custom_command的文档:
如果COMMAND指定了可执行目标(由ADD_EXECUTABLE创建),它将自动替换为在构建时创建的可执行文件的位置。此外,还将添加目标级依赖关系,以便在使用此自定义命令的任何目标之前构建可执行目标。