私のプロジェクトでは、ヘッダファイルを生成するために書いた "スキーマ"ファイルとユーティリティがあります。 私はアプリケーションをビルドするためにcmakeとソース外のビルドを使用しています。cmakeをソースにヘッダを生成する方法は?
現在、私は手作業でヘッダファイルを再生成し、アプリケーションをビルドする必要があります。
私はこのCMakeLists.txtステートメントを思いついたが、ソースディレクトリの代わりにビルドディレクトリにヘッダーを生成します。
configure_file(generator.pl generator COPYONLY)
configure_file(schema.txt.in schema.txt COPYONLY)
add_custom_command(
OUTPUT generated.h
COMMAND ./generator schema.txt generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
ソースディレクトリにヘッダを生成することはできますか?
編集(答えを反映するために):に、
ので${CMAKE_CURRENT_BINARY_DIR}
:
ファイルが完全に
${CMAKE_CURRENT_SOURCE_DIR}
かのいずれかでそのパスを修飾することにより、直接到達することができます私のソースディレクトリにヘッダを生成すると、CMakeLists.txtの前の抜粋は次のようになります:
実際にはより簡単なadd_custom_command(
OUTPUT generated.h
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/generator.pl ${CMAKE_CURRENT_SOURCE_DIR}/schema.txt.in ${CMAKE_CURRENT_SOURCE_DIR}/generated.h
DEPENDS mib_schema.txt.in generator.pl
COMMENT "Regenerating header file..."
)
です。 おかげ
これは実際には良いアイデアです。生成されたファイルをソースディレクトリに保存することができれば、ソースパッケージに含まれています。私のライブラリのユーザは、ジェネレータを変更しない限り、ファイルを生成する必要はありません。 /またはソースデータファイル)。これは、より多くの人々が私の図書館をコンパイルできることを意味します! –