qt – qmake如何确定要在Makefile中使用的编译器?
qt源附带了一些示例.
从互联网下载之后,我转到examples / painting / concentriccircles并运行’qmake’并从.pro文件生成Makefile(设置CC = gcc),在make之后,我可以运行demo程序concentriccircles我的CentOS机器. (运行x86代码). 现在我有一个在运行操作系统的sparc机器上运行Qt的项目,我已经设置了构建树.如果我将整个concentriccircles目录移动到构建树中的某个位置,当我运行’qmake’时,生成的Makefile设置CC = sparc-xxx-gcc而不是普通的gcc(用于x86主机).事实上,如果我没有移动目录,如果我从sparc构建树运行qmake,它就会为sparc创建Makefile. (不管.pro文件) qmake如何知道我正在从运行qmake的位置构建sparc机器的qt程序?下面是concentriccircles.pro文件. HEADERS = circlewidget.h window.h SOURCES = circlewidget.cpp main.cpp window.cpp # install target.path = $$[QT_INSTALL_EXAMPLES]/painting/concentriccircles sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS concentriccircles.pro sources.path = $$[QT_INSTALL_EXAMPLES]/painting/concentriccircles INSTALLS += target sources symbian { TARGET.UID3 = 0xA000A64A include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri) } maemo5: include($$QT_SOURCE_TREE/examples/maemo5pkgrules.pri) 解决方法
首先,您需要知道默认情况下qmake正在使用哪个规范.你可以这样做
qmake -query QMAKE_MKSPECS 结果应该是包含所有mkspecs的路径,即 /usr/share/qt4/mkspecs 现在您可以检查默认的mkspec: ls -lah /usr/share/qt4/mkspecs/default 结果(对于我的配置) /usr/share/qt4/mkspecs/default -> linux-g++-64 很明显你可以看到我默认使用linux-g -64 mkspec 现在让我们看看规范中的内容: cat /usr/share/qt4/mkspecs/default/qmake.conf 结果: # # qmake configuration for linux-g++ # # Written for GNU/Linux platforms that have both lib and lib64 directories,# like the AMD Opteron. # MAKEFILE_GENERATOR = UNIX TARGET_PLATFORM = unix TEMPLATE = app CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index QT += core gui QMAKE_INCREMENTAL_STYLE = sublib QMAKE_CFLAGS = -m64 QMAKE_LFLAGS = -m64 include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) QMAKE_LIBDIR_X11 = /usr/X11R6/lib64 QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64 load(qt_config) 如您所见,它包含一些其他.conf文件.在我的配置中,g -unix.conf只包含g -base.conf,所以我会直截了当地说: cat /usr/share/qt4/mkspecs/common/g++-base.conf 结果: # # Qmake configuration for the GNU C++ compiler # # Before making changes to this file,please read the comment in # gcc-base.conf,to make sure the change goes in the right place. # # To verify that your change has the desired effect on the final configuration # you can use the manual test in tests/manual/mkspecs. # QMAKE_CC = gcc QMAKE_LINK_C = $$QMAKE_CC QMAKE_LINK_C_SHLIB = $$QMAKE_CC QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -g QMAKE_CXX = g++ QMAKE_LINK = $$QMAKE_CXX QMAKE_LINK_SHLIB = $$QMAKE_CXX QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_PCH_OUTPUT_EXT = .gch QMAKE_CFLAGS_PRECOMPILE = -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CFLAGS_USE_PRECOMPILE = -include ${QMAKE_PCH_OUTPUT_BASE} QMAKE_CXXFLAGS_PRECOMPILE = -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE 如您所见,编译器是通过选择qmake spec文件严格定义的.您可以通过调用使用不同的spec文件 qmake -spec SPEC_NAME SPEC_NAME应该是qmake -query QMAKE_MKSPECS中的目录名称 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |