2011-01-12 22 views
3

ソースファイルをターゲットに追加すると、C/C++ファイル拡張子からのものであれば自動的に認識されます。私が達成したいのは、xxx.fooというソースを入れると、すべての.fooファイルが、あらかじめ定義されたコンパイラコマンドのセットで処理されるということです。CMakeは新しいファイル拡張子を自動的に認識します

私が進むべき道はadd_custom_commandを使用していることを知っているが、私が見てきたすべての例がここにhttp://www.cmake.org/Wiki/CMake_FAQ#How_can_I_generate_a_source_file_during_the_build.3F

問題への適切なアプローチについての任意のアイデアを使用したもののような固定されたファイル名を使用していますか?問題にアプローチする

答えて

2

一つの方法は、.fooという拡張子を持つファイルの特殊な処理を行うラッパー関数やマクロで平野CMakeのadd_executableadd_libraryコマンドを交換し、標準add_executableに介して他の引数とオプションを渡すことですかadd_libraryコマンド。例えば:

set (FOO_SRCS "main.cpp" "module.cpp" "xxx.foo" "yyy.foo") 
foo_add_executable(fooexec ${FOO_SRCS}) 
foo_add_library(foolib ${FOO_SRCS}) 

FindCUDA標準のCMakeモジュールがこのアプローチを採用しています。それは拡張子.cuのソースファイルをNVIDIA Cコンパイラに供給するCUDA_ADD_EXECUTABLEとCUDA_ADD_LIBRARYコマンドを追加します。

-1

ファイルグロビングの使用を検討しましたか?例えば。

file(GLOB MY_FOO_FILES *.foo) 
add_library(foolib "main.cpp" ${MY_FOO_FILES}) 

また、カスタムコマンドで各ファイルを実行することもできます。

関連する問題