我无法构建Pythonqt
这是关于PythonQt的内容,网址是pythonqt.sourceforge.net。我使用的是PythonQt-1.1版本,Qt版本是4.6.2,Python版本是2.6.4.10,开发环境是Visual Studio 2008。
根据说明:
cd PythonQtRoot
vcvars32
qmake
nmake
我输入了qmake,这样生成了一个makefile文件,然后我接着输入nmake,但它提示我“makefile(22) :fatal error U1000: 语法错误:缺少')'的宏调用,停止。”我在这里做错了什么呢?
提前谢谢大家……
3 个回答
你有没有确认在构建文件夹里更新了Python和Qt的版本,并且把你需要的东西都包含在你的环境里?
在build\python.prf文件中:更新Python版本。
使用Visual Studio命令提示符,并跳过vcvars32。
设置你的环境路径:
set PATH=E:\toolkits\Trolltech\Qt-4.8.6\Win_x64_6.1_v12_debug\lib;%PATH%
set PATH=E:\toolkits\Trolltech\Qt-4.8.6\Win_x64_6.1_v12_debug\bin;%PATH%
set PYTHON_PATH=E:\toolkits\Python\2.7.9\Win_x64_6.1_v12
set PYTHON_LIB=E:\toolkits\Python\2.7.9\Win_x64_6.1_v12\libs
在这些路径下,你应该能找到:
- 所有的Qt库(比如QtCore4.dll等)
- 所有的Qt可执行文件(比如uic、moc等)
- python26.dll和python.exe
我还需要更新其他的.prf文件,以确保在调试DLL时,调试扩展能够正确处理。
我的建议是把PythonQt项目作为你自己项目的一部分,和CMake一起使用。
这样你只需要把它作为你项目的一部分进行静态构建(在基础的CMakeLists.txt
文件中,把add_library
里的SHARED去掉)。记住,如果你想这样做,还需要从它的基础CMakeLists.txt
中去掉project(PythonQt)
,然后在你自己的CMakeLists.txt
基础文件中添加以下内容:
if( PYTHON_QT_SUPPORT )
message(STATUS ":::: Including support for PythonQT Shell ::::")
# Include Python directories
find_package(PythonLibs REQUIRED)
include_directories("${PYTHON_INCLUDE_DIR}")
# Include PythonQt
include_directories(YOURPATHTOPYTHONQT/pythonqt/src)
add_subdirectory(YOURPATHTOPYTHONQT/pythonqt)
endif(PYTHON_QT_SUPPORT)
我记得在用最近版本的Qt在Win32上构建其他包时也遇到过类似的问题。顺便说一下,我是在cygwin环境下运行的。经过一番调试,我发现‘qmake’使用了错误的‘mkspec’。解决这个问题的一个办法是强制使用正确的mkspec,方法如下:
export QMAKESPEC=win32-msvc2008
或者
export QMAKESPEC=win32-msvc
为了找到所有有效的mkspec列表,我查看了这个目录:
c:\Qt\4.6.0\mkspecs
或者
c:\Qt\2010.01\qt\mkspecs
对于某个特定的包,我在系统上安装的其他工具之间有一些冲突,所以我不得不编辑实际的mkspec文件,指向正确的工具,并使用绝对路径,但听起来这不是你这里的问题。你的问题似乎是生成了一个与gmake兼容的Makefile,而不是与nmake兼容的Makefile,所以这个解决办法应该有效。
-- Glenn