みなさん、良い一日を。
次のような状況があります: アプリケーションをコンパイルすることになっている CMake ファイルがあります。
- 1 つまたは複数の
cpp
ファイル - いくつかのテンプレート ファイル (
ecpp
) は、cpp
ファイルに生成され、アプリケーションにコンパイルされます (以下にリストされているWEB_COMPONENTS
ため、コンポーネントごとに関連.ecpp
ファイルとそこ.cpp
から生成される があります)。
そして、ここに CMakeLists.txt (簡略化) があります
cmake_minimum_required (VERSION 2.6)
set (PROJECT sinfonifry)
set (ECPPC /usr/local/bin/ecppc)
set (WEB_COMPONENTS
images
menu
css
)
set(${PROJECT}_SOURCES
""
CACHE INTERNAL ${PROJECT}_SOURCES
)
foreach(comp ${WEB_COMPONENTS})
list(APPEND ${PROJECT}_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${comp}.cpp )
execute_process(COMMAND ${ECPPC} -o ${CMAKE_CURRENT_BINARY_DIR}/${comp}.cpp -v
${CMAKE_CURRENT_SOURCE_DIR}/${comp}.ecpp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} OUTPUT_QUIET
)
endforeach()
list(APPEND ${PROJECT}_SOURCES main.cpp )
add_executable(${PROJECT}_exe ${${PROJECT}_SOURCES})
target_link_libraries(${PROJECT}_exe cxxtools dl tntnet tntdb)
さて、何が起こるか: 非常に初めて (つまり、ビルド ディレクトリを作成し、cmake-gui を実行し、Web コンポーネントを選択し、構成し、生成し、作成します)、CMake は${ECPPC}
コマンドを適切に実行します。必要な CPP ファイルをバイナリ ディレクトリに生成し、それらをリンクします。
しばらくして、明らかに作業中に、コンポーネント ファイルの 1 つ ( など) を変更し、ビルド ディレクトリで再度images.ecpp
実行します。make
しかし、現在、CMake はecpp
ファイルの変更を取得しません。cmake-gui に移動し、キャッシュを削除し、すべてをゼロから再起動する必要があります。これは非常に面倒で遅いです。
だから、2つの質問:
の変更を追跡し、変更された場合にコンパイラ
images.ecpp
を呼び出すように CMake に指示できますか?${ECPPC}
生成されたファイル
make clean
も削除するにはどうすればよいですか。cpp
お時間をいただきありがとうございます、f.