私はもともとCMakeメーリング リストでこの質問をしました: How to configure target or command to preprocess C file?
GNU Autotoolsに基づくビルド構成をCMake に移植しており、ファイルを生成するために C の前処理を行う必要があります。
プリプロセッサの入力は、 などのC プリプロセッサディレクティブが使用されたSQLファイルです。#include "another.sql"
現在、Makefile次のルールを使用してプレーンSQLファイルを出力として生成します。
myfile.sql: myfile.sql.in.c
cpp -I../common $< | grep -v '^#' > $@
そのため、myfile.sql共有ライブラリや実行可能ファイルと同様に、ビルド プロセスの製品の 1 つを意味します。
同じ効果を得るには、どの CMake ツールを使用すればよいですか?
add_custom_commandを使用するadd_custom_targetか、両方を組み合わせる必要があるかは不明です。
明らかに、少なくともGNU GCCおよびVisual Studioツールセットで動作するポータブル ソリューションを探しています。プラットフォーム固有のカスタム コマンドを定義する必要があると思います。1 つはcppプリプロセッサ用、もう 1 つはcl.exe /P.
または、CMake は C プリプロセッサに何らかの抽象化を提供しますか?
アーカイブをスキャンしましたが、fortran ファイルの前処理またはmake機能に基づくソリューションしか見つかりませんでした。make myfile.i
したがって、探しているものとはまったく異なります。
更新: CMake メーリング リストでPetr Kmoch から受け取ったソリューションに基づいて回答を追加しました。