CMake:在构建项目时执行C ++文件

时间:2016-12-29 10:54:39

标签: c++ cmake

我正在开发一个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文件正在文本编辑器中打开,而不是被执行。我该如何解决这个问题?

1 个答案:

答案 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创建),它将自动替换为在构建时创建的可执行文件的位置。此外,还将添加目标级依赖关系,以便在使用此自定义命令的任何目标之前构建可执行目标。