【发布时间】:2014-08-15 02:22:30
【问题描述】:
我正在尝试将 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 意识到这一点,但在我尝试执行此步骤时,我已经注释掉了该代码。
【问题讨论】:
标签: qt makefile pyqt qmake python-sip