我正在尝试将 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
脚本没有运行并且发生错误:
制作:*没有规则制作目标
../../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 知道,但是我在尝试执行此步骤时已经注释掉了该代码。