3

私の問題を示すには、例を示すのが最善の方法だと思います。

src という名前のソース ディレクトリがあるとします。このディレクトリには、CMakeLists.txt ファイルと blah という名前の python ファイルの 2 つのファイルがあります。src が格納されている場所と同じ場所に、build という名前のフォルダーがあります。ここで、cmake を実行して、python ファイル blah をコンパイルし、ビルド ディレクトリに配置できるようにしたいと考えています。現在、私の CMakeLists.txt は、次の呼び出しを使用して、コンパイルされていないコードをビルド ディレクトリに直接コピーしているだけです。

CONFIGURE_FILE(${PATH_TO_SOURCE}/blah.py ${PATH_TO_BUILD}/blah.py COPYONLY)

次に、ターミナルで make を実行して実際のファイルをコンパイルします。これにより、コンパイルされていない python ファイルがビルド ディレクトリに残りますが、これは良くありません。ADD_EXECUTABLES を使用して、カスタム ターゲットを作成し、COMMAND を使用してみましたが、構文がどこかずれている必要があります。どんな助けでも大歓迎です!

4

1 に答える 1

4

CMakeはそのままのPython、AFAIKをサポートしていません。このため、Pythonファイルを作成するためのルールを作成する必要があります。

macro(add_python_target tgt)
  foreach(file ${ARGN})
    set(OUT ${CMAKE_CURRENT_BINARY_DIR}/${file}.pyo)
    list(APPEND OUT_FILES ${OUT})
    add_custom_command(OUTPUT ${OUT}
        COMMAND <python command you use to byte-compile .py file>)
  endforeach()

  add_custom_target(${tgt} ALL DEPENDS ${OUT_FILES})
endmacro()

定義したら、次のように使用できます。

add_python_target(blabla blah.py)

アジャストメネットを作成したい場合、または詳細情報が必要な場合は、CMakeのドキュメントを参照してください。

于 2012-09-05T09:44:33.527 に答える