Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 运行“catkin\u make clean”时外部项目的clean目标出现问题`_Cmake_Ros_Catkin - Fatal编程技术网

Cmake 运行“catkin\u make clean”时外部项目的clean目标出现问题`

Cmake 运行“catkin\u make clean”时外部项目的clean目标出现问题`,cmake,ros,catkin,Cmake,Ros,Catkin,我的存储库中有很多软件包,我的一些软件包是通过以下方式安装的(我的一个自定义ROS软件包的CMakeLists.txt文件片段): include(外部项目) 外部项目添加( SOURCE\u DIR${CMAKE\u CURRENT\u SOURCE\u DIR}/ 配置\u命令“” 在\u源1中生成\u 生成命令$(MAKE) INSTALL_COMMAND$(MAKE)DESTDIR=${u DESTDIR}INSTALL ) 这在使用catkin\u make编译时非常有效,但是如果我

我的存储库中有很多软件包,我的一些软件包是通过以下方式安装的(我的一个自定义ROS软件包的CMakeLists.txt文件片段):

include(外部项目)
外部项目添加(
SOURCE\u DIR${CMAKE\u CURRENT\u SOURCE\u DIR}/
配置\u命令“”
在\u源1中生成\u
生成命令$(MAKE)
INSTALL_COMMAND$(MAKE)DESTDIR=${u DESTDIR}INSTALL
)
这在使用
catkin\u make
编译时非常有效,但是如果我尝试使用
catkin\u make clean
运行clean目标,则我安装的外部项目不会被清理。这会导致使用
catkin\u make
再次编译时出现问题


有没有办法解决这个问题?我阅读了所有的源代码,但创建干净的目标似乎完全是由cmake完成的。

如果您希望将外部项目作为项目的一部分反复构建(并清理),请使用add\u子目录而不是ExternalProject\u add将其包括在内

如果您使用add_子目录将其作为构建系统的一部分,那么当您调用catkin_make clean时,它将被清理

include(ExternalProject)
ExternalProject_Add(<PACKAGE_NAME>
    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/<SOME_PATH>
    CONFIGURE_COMMAND ""
    BUILD_IN_SOURCE 1
    BUILD_COMMAND $(MAKE)
    INSTALL_COMMAND $(MAKE) DESTDIR=${<PACKAGE>_DESTDIR} install
)