我的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错误:尝试添加自定义规则以输出'
答案 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
)
标头的模拟。使用这种方法,您可以避免使用两个可能不同步的列表。