私はもともと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 から受け取ったソリューションに基づいて回答を追加しました。