Cmake错误:set命令不喜欢先前set命令中的相同.h文件

时间:2013-12-06 16:46:51

标签: c++ cmake set

我的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(GUI_HEADER_FILES_HPP $ {GUI_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错误:尝试添加自定义规则以输出'

1 个答案:

答案 0 :(得分:1)

我想你想做那样的事情

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
)

标头的模拟。使用这种方法,您可以避免使用两个可能不同步的列表。