Cmake错误:set命令不喜欢上一个set命令中的相同.h文件

Cmake error: set command does not like the same .h files from a previous set command

本文关键字:命令 set 文件 上一个 错误 不喜欢 Cmake      更新时间:2023-10-16

我的CMake.txt文件中有两个set命令。我有这样的东西:

set(GUI_SOURCE_FILES         
    src/UINode/main.cpp  
    src/UINode/b.cpp  
    src/UINode/c.cpp  
    src/UINode/d.cpp  
)
set(GUI_HEADER_FILES        
    src/UINode/b.h 
    src/UINode/c.h  
    src/UINode/d.h 
)

这很好用,可执行文件也很好。现在,我想要另一组set命令,这些命令需要包含上述内容,并添加新的.h和.cpp文件。我不确定这是否可能,但我知道我不能做这样的事情:

set(GUIA_SOURCE_FILES         
    src/UINode/different_main.cpp  
    src/UINode/b.cpp  
    src/UINode/c.cpp  
    src/UINode/d.cpp  
        src/anotherpath/e.cpp
)
set(GUIA_HEADER_FILES        
    src/UINode/b.h 
    src/UINode/c.h  
    src/UINode/d.h
        src/anotherpath/e.h 
)

第1版:感谢回复user2799037!我现在有这样的东西:

set(COMMON_SOURCE_FILES         
src/UINode/a.cpp  
src/UINode/b.cpp  
src/UINode/c.cpp 
)
set(COMMON_HEADER_FILES        
 src/UINode/a.h 
src/UINode/b.h  
src/UINode/c.h  
)

然后我使用它们:

set(GUI_SOURCE_FILES         
src/UINode/main_GUI.cpp  
${COMMON_SOURCE_FILES}
)
set(GUI_HEADER_FILES        
${COMMON_HEADER_FILES}  
)

然后做QT4_WRAP_CPP(guid_HEADER_FILES_HPP${guid_HEADER.FILES})然后是rosbuild_add_executable。

下一部分我做:

set(GUIA_SOURCE_FILES         
src/commands/main_GUI1.cpp  
${COMMON_SOURCE_FILES}
)
set(GUIA_HEADER_FILES        
${COMMON_HEADER_FILES}   
src/pathplanning/anotherheader.h
)

但当我这样做时,我会得到一个错误:QT4_WRAP_CPP(GUIA_HEADER_FILES_HPP${GUIA_HEADER_FILES})

'CMake错误:尝试将自定义规则添加到输出'

我想你想做一些类似的事情

set(COMMON_SOURCE_FILES
    src/UINode/b.cpp
    src/UINode/c.cpp
    src/UINode/d.cpp
)
set(COMMON_HEADER_FILES
    src/UINode/b.h
    src/UINode/c.h
    src/UINode/d.h
)

并为您使用这些更具体的变量:

set(GUI_SOURCE_FILES         
    ${COMMON_SOURCE_FILES }
   src/anotherpath/main.cpp
)
set(GUIA_SOURCE_FILES         
    ${COMMON_SOURCE_FILES }
   src/anotherpath/different_main.cpp
)

收割台模拟。使用这种方法可以避免出现两个列表不同步的情况。