小编Aks*_*rma的帖子

将 compile_commands.json 复制到项目根文件夹

CMakeLists.txt在我的项目的根目录中有一个CMAKE_EXPORT_COMPILE_COMMANDS打开的。

我正在文件夹中构建目标并通过add_subdirectory. 该文件夹有自己的CMakeLists.txt文件。

compile_commands.json 建在二进制目录的根目录下,我想在运行cmake命令后将其复制到源目录的根目录。

我尝试了两种方法。

  1. add_custom_targetadd_custom_command。我创建了一个虚拟目标。我使用这个目标add_custom_command来复制文件,但它不会在add_custom_command.

  2. file(COPY ...) 第一次触发命令时,compile_commands.json不是通过 cmake 创建的。我不想两次运行 cmake 命令来复制compile_commands.json到源文件夹的根目录。

CMAKE_MINIMUM_REQUIRED(VERSION 3.8)
project(exec LANGUAGES CXX)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

add_subdirectory("DirectoyWithTarget")

add_custom_target(copy_compile_commands
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json)
add_custom_command(
  TARGET copy_compile_commands
  PRE_BUILD
  COMMAND ${CMAKE_COMMAND} -E copy_if_different
    ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json
    ${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json
  )   
Run Code Online (Sandbox Code Playgroud)

compile_commands.json文件不会复制到${CMAKE_CURRENT_SOURCE_DIR}. 这意味着add_custom_command未触发。

cmake

5
推荐指数
2
解决办法
1055
查看次数

标签 统计

cmake ×1