私は、execute_processを使ってCMakeList.txt内からPythonモジュールgladを実行しようとしています。CMakeの呼び出しをうまく実行する
glad's Gitのハブページの指示に従い、私が使用してそれをインストール:
pip install --user glad
私はbashので端末エミュレータで次のコマンドを実行すると、期待どおりに動作します:
python -m glad --generator=c --no-loader --out-path=GL
同じことが成り立ちます:
/home/boris/miniconda2/bin/python -m glad --generator=c --no-loader --out-path=GL
モジュールがうまく見つからないとCMakeList.txtが報告します。
cmake_minimum_required(VERSION 3.0)
set (glad_arg "-m glad --generator=c --no-loader --out-path=GL")
set (glad_cmd "python")
message(STATUS "glad cmd: ${glad_cmd}")
execute_process(COMMAND ${glad_cmd} ${glad_arg}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE glad_result
OUTPUT_VARIABLE glad_ver
ERROR_VARIABLE glad_err)
message(STATUS "glad_err: ${glad_err}")
出力私のプロジェクトのビルドディレクトリ内から../cmakeを実行している場合:
boris-> cmake ..
-- glad cmd: python
-- glad_err: /home/boris/miniconda2/bin/python: No module named glad --generator=c --no-loader --out-path=GL
-- Configuring done
-- Generating done
-- Build files have been written to: /home/boris/Projects/OpenGL/SO/1_glad_In_Cmake/build
質問:それは働いていないのはなぜ、そしてどのようにそれを修正するには? CMakeのは${glad_arg}
単機能のパラメータとしてあなたがexecute_process()
にそれを渡したときに解釈し、そのための
set (glad_arg "-m glad --generator=c --no-loader --out-path=GL") # Single value variable
:
**すべてのパラメータ**を二重引用符で囲んではいけません。正しい: 'set(glad_arg -m glad - 生成子= c --no-loader --out-path = GL)' (つまり、二重引用符は通常完全に省略することができます)。 – Tsyvarev
@ Tsyvarev、これは問題を解決しました。どうもありがとうございました。あなたのコメントをコピーして過去のものにして、それを回答として掲示してください。それを受け入れられた回答としてマークします。 ありがとうございます。 –