强制 catkin_make 每次重新生成cmakelists.txt
时间: 2024-10-22 13:04:38 浏览: 33
如果你想要在每次修改`CMakeLists.txt`文件后都强制`catkin_make`重新生成,可以设置CMake的一个选项叫做`FORCE_REGENERATION`。这个选项告诉CMake每次CMakeLists.txt发生改变时都应该重新构建项目。在你的`CMakeLists.txt`顶部添加以下行:
```cmake
set(CMAKE ForceRegeneration TRUE)
```
或者如果你想让它只对特定文件生效,你可以指定文件路径:
```cmake
file(GLOB_RECURSE cmake_change_files "path/to/CMakeLists.txt")
message("Files that changed: ${cmake_change_files}")
if(cmake_change_files)
set(CMAKE_FORCE_REGENERATION TRUE PARENT_SCOPE)
endif()
```
这样,只要`CMakeLists.txt`或其他指定的文件有改动,`catkin_make`就会自动重新构建。
相关问题
The specified base path "/home/q/catkin_ws" contains a CMakeLists.txt but "catkin_make" must be invoked in the root of workspace
这个错误提示意味着你正在尝试在一个不是 catkin 工作区的子目录中运行 catkin_make 命令。在 catkin 工作区中,catkin_make 命令必须在工作区的根目录中运行。确保你正在工作区的根目录中运行 catkin_make 命令,或者在正确的工作区中运行该命令。如果问题仍然存在,请检查你的工作区目录结构是否正确。
catkin_init_workspace Creating symlink "/home/sage/catkin_zhjh/src/CMakeLists.txt" pointing to "/opt/ros/noetic/share/catkin/cmake/toplevel.cmake"
catkin_init_workspace是一个ROS工具,用于初始化一个Catkin工作空间。它会在当前目录下创建一个CMakeLists.txt的符号链接,指向Catkin工作空间所需的CMake文件。这个符号链接通常指向/opt/ros/<distro>/share/catkin/cmake/toplevel.cmake,其中<distro>是你所使用的ROS发行版的名称(在你的情况下是noetic)。这个符号链接的创建是为了方便在Catkin工作空间中使用Catkin工具链进行构建和管理ROS软件包。
阅读全文