8

Qtプロジェクトを構成するセットに属するファイルと、そうでない他のファイルのいずれかを含むディレクトリがあります。つまり、ファイルA.cxx、ADriver.cxx、およびA.uiはすべて、Qtオプションを使用してコンパイルする必要があるセットに属しています。次に、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ファイルループで使用されるファイルを削除する必要があります。これは可能ですか?このようなことをするためのより良い方法はありますか?

4

1 に答える 1

9

まず、グロブを使用してすべてのファイルを収集します。

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ます。

于 2012-10-29T03:36:26.923 に答える