PyQt5 バインディングの作成を qmake ビルド プロセスに統合しようとしています。SIP ファイルの準備ができており、そのためのコンパイラをセットアップしました。
SIP_FILES += global/sip/Sy_version.sip
sipSourceBuilder.input = SIP_FILES
sipSourceBuilder.output_function = sipSourceHandler
sipSourceBuilder.variable_out = SOURCES
sipSourceBuilder.dependency_type = TYPE_C
sipSourceBuilder.CONFIG += target_predeps
sipSourceBuilder.commands = $$PYTHON $${PWD}/sipConfigure.py \
$$QT_SIP_PATH \
$${_PRO_FILE_PWD_} \
$${_PRO_FILE_PWD_}/${QMAKE_FILE_IN}
QMAKE_CLEAN += $${_PRO_FILE_PWD_}/sipOutput/sip${QMAKE_TARGET}cmodule.cpp
SOURCES += $${_PRO_FILE_PWD_}/sipOutput/sip${QMAKE_TARGET}cmodule.cpp
QMAKE_EXTRA_COMPILERS += sipSourceBuilder
defineReplace
機能sipSourceHandler
は正常に動作しています。ビルドを開始すると、sipConfigure.py
スクリプトが実行されず、エラーが発生します。
make: *ターゲット
../../Syren2/core/sipOutput/sipcoreSy_version.cpp', needed by
/home/cmannett85/Programs/Syren2/libs/libcore.so.1.0.0' を作成するルールはありません。止まる。
スクリプトが実行されなかった場合、これは理にかなっていますが、なぜ実行されなかったのでしょうか? Makefile は、ルールがあることを示しています。
/home/cmannett85/workspace/Syren2/source/Syren2/core/sipOutput/sip${QMAKE_TARGET}Sy_version.cpp: ../../Syren2/core/global/Sy_version.h \
/home/cmannett85/Qt/5.3/gcc_64/include/QtCore/QtGlobal \
// ...Lots of includes....
../../Syren2/core/global/sip/Sy_version.sip
python3 /home/cmannett85/workspace/Syren2/source/Syren2/sipConfigure.py /usr/share/sip/PyQt5 /home/cmannett85/workspace/Syren2/source/Syren2/core /home/cmannett85/workspace/Syren2/source/Syren2/core/../../Syren2/core/global/sip/Sy_version.sip
(巨大な横スクロールでごめんなさい)。 ${QMAKE_TARGET}
でcore
あり、Makefile で変数として宣言されています。sipSourceBuilder.commands
をランダムにバッシュされた文字に設定しようとしましたが、ビルド中に何も文句を言わなかったので、make
を使用しようとさえしていないようsipSourceBuilder
です。理由について何か提案はありますか?
また、SIP コンパイラは、qmake に認識させる必要があるヘッダー ファイルも生成することを知っていますが、この手順を実行しようとしている間、そのコードをコメントアウトしました。