从一组中删除文件(Removing files from a set)

2019-07-03 10:54发布

我有,要么属于一组,构成了一个Qt工程文件,并没有其他文件的目录。 也就是说,文件A.cxx,ADriver.cxx和A.ui都属于一组需要使用Qt选项进行编译。 然后,我有一个文件B.cxx即非调质。 然后C.cxx,CDriver和C.ui是另一个Qt的一套。 有几十这些,所以我想用水珠,而不是手工编写每个add_executable。 我想在做类似的

for(all ui files) 
  create an executable from the ui and its matching .cxx and *Driver.cxx"
end

然后,所有CXX文件“保持”(在上面的循环未使用)都是非Qt的,并且需要自己编译。 我的问题是如何从一个“集”,“减”的文件。 也就是说,使用说明上面的方法我得有一组所有CXX文件,并删除获得的文件的.ui循环使用的。 这可能吗? 有没有更好的办法做这样的事情?

Answer 1:

首先,收集与水珠的所有文件:

file(GLOB ALL_SRCS *)

然后选择UI文件,并为他们创造Qt的目标,从他们从其减去ALL_SRCS在同一时间列表:

file(GLOB UIS *.ui)

foreach(ui ${UIS})
get_filename_component(f ${ui} NAME_WE)

# Do Qt stuff
qt4_wrap_ui( ${f}uis ${ui} )
qt4_wrap_cpp( ${f}srcs ${f}.cpp ${f}Driver.cpp )
add_executable( ${f} ${f}uis ${f}srcs )

list(REMOVE_ITEM ALL_SRCS ${ui} ${f}.cpp ${f}Driver.cpp)
endforeach()

在此之后,你就必须在所有非QT来源ALL_SRCS



文章来源: Removing files from a set
标签: cmake