CMAKE:构建项目时执行C 文件

CMake: Executing a C++ file when building the project

本文关键字:执行 文件 项目 构建 CMAKE      更新时间:2023-10-16

我正在开发C 项目,我想在构建上执行脚本以生成一些文件。我对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文件是在文本编辑器中打开的,而不是被执行。我该如何解决?

因为 .c文件不是脚本,而是源文件,所以您不能直接执行它。但是,您可以首先将其编译为可执行文件:

add_executable(PrecisionCommand ${CMAKE_SOURCE_DIR}/src/main/matlab/matlabprecision.cpp)

然后运行该可执行文件:

add_custom_command(
  OUTPUT ${precision_output_files}
  COMMAND PrecisionCommand
  COMMENT "Running PrecisionCommand"

请注意,命令选项使用目标名称用于运行可执行文件。cmake了解用法和:

  • 将目标名称转换为路径 到可执行的。
  • 在创建可执行文件和运行它之间添加适当的依赖项

来自有关add_custom_command的文档:

如果命令指定可执行的目标(由add_executable创建),它将自动由在构建时间创建的可执行文件的位置替换。此外,将添加目标级依赖项,以便使用此自定义命令在任何目标之前构建可执行目标。