我有时必须像这样编写qmake pro文件: QMAKE_EXTRA_TARGETS += activate macos { clear_cache.commands += defaults write io.delille.$$TARGET activated 1; } win32 { clear_cache.commands += another working command; } linux { clear_cache.commands += echo unsupported; } ios { clear_cache.commands += echo unsupported; } 是否有一种方法可以避免以更简单的方式列出所有不支持的板块,例如大多数语言允许的话,如果if/else if语句? 解决方案 qmake知道/else: doc.qt.io/qt-5/qmake-language.html#scopes
以下是关于 qmake 的编程技术问答
构建后如何更改QT安装路径? 示例:qmake.exe搜索二进制文件到原始安装路径,如何更改/重新定义? 谢谢. 编辑:我终于找到了适用于QT的补丁: win32/patcher/qtpatcher.7z win32/patcher/qtpatche_src.7z 解决方案 我正在调查这一点,并通过使用qt.conf文件自定义QT找到了一种有效的方法(在QT 4.7.2中). 就我而言,我添加了qt4-4.7.2/bin/qt.conf(我认为它必须与qmake可执行文件相同) 带有以下内容: [Paths] Prefix = c:/my_path/to/qt4-4.7.2 和qmake -Query开始返回正确的路径! 请参阅: http://qt-project.org/doc/doc/doc/qt/qt-5.0/qtdoc/qt-conf.html 有关更多详细信息 其他解决方案 您可以使用qmake -set命
我项目的结构如下: Proj Proj.pro --subProj --subProj.pro ----subsubProj ----subsubProj.pro 有没有一种方法可以在supproj.pro中实例一个全局变量,并将其称为EN,例如subsubproj.pro喜欢: proj.pro: GLOBAL_VAR = true subsubproj.pro: message($$GLOBAL_VAR) 更新 也许我应该更精确地解决我的问题. 当您右键单击proj并选择"构建项目" proj"时,QT创建者的通常行为是QMAKE PROJ.PRO被调用,然后qmake supproj.pro,然后subsubproj.proj.pro 我想实现的目标是: 当我构建项目" proj"时,只有proj.pro和subproj.pro被调用(不是subsubproj.pro) 但是:当我构建项目" subproj"时,调用文件为s
为Win32,Mac和Linux开发了一个标准的基于C ++的库.在QMake项目文件中,包括平台相关的来源如下: win32 { SOURCES += WinSystem.cpp HEADERS += WinSystem.h } macx { SOURCES += MacSystem.cpp HEADERS += MacSystem.h } unix { SOURCES += LinuxSystem.cpp HEADERS += LinuxSystem.h } 现在在OS X上都定义了unix和macx,因此还包括Linux文件并导致错误!该解决方案是什么? 解决方案 您可以否定并组合块,因此在UNIX中,但在Mac中不在: unix:!macx { SOURCES += LinuxSystem.cpp HEADERS += LinuxSystem.h }
我想用Qmake构建Dogecoin.它与Fedora的OpenSSL无法使用,因为其OpenSSL不包含椭圆曲线密码学.所以我有自己的openssl,但我不知道如何更改dogecoin-qt.pro文件以包含来自其他位置的openssl. 通常,我会做到这一点: $ export OPENSSL_INCLUDE_PATH="/usr/local/ssl/include" $ export OPENSSL_LIB_PATH="/usr/local/ssl/lib" qmake似乎有所不同,我需要更改的文件在这里: https ://github.com/dogecoin/dogecoin/blob/master/dogecoin-qt.pro 我该如何更改它,或者我可以对Qmake提出什么论点,所以我不必这样做? 编辑:我已经编辑了它生成的makefile,但是知道答案仍然很高兴,因为它会为其他人提供更好的构建指令. 解决方案 您将必须更改为OpenS
我将一些GLM文件包含在我的代码中,并且我收到了很多错误(其中至少90个错误).为什么会发生这种情况,我不知道.我正在使用最新的GLM(在撰写本文时为0.9.3.3).我还在Windows上使用QT Creator,并使用您会看到的QMAKE文件. 我还应该注意,我最终将GLM文件夹复制到我的Mingw文件夹中的Include目录. 我该怎么做才能解决此问题? qmake CONFIG += console HEADERS += \ util.hpp \ ShaderComparable.hpp \ SearchTree.hpp \ FileUtility.hpp \ Debug.hpp \ ShaderHandler.hpp \ Shader.hpp \ Testing.hpp \ Sphere.hpp \ Shape.hpp \ Circle.hpp \ Math
我试图为Raspberry Pi 3 Compute模块编译,我一直在此处遵循在线指南(调用了以下参数调用QTBase配置: ./configure -opengl es2 -device linux-rpi3-g++ -device-option CROSS_COMPILE=/home/osboxes/Downloads/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /mnt/pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -prefix /usr/local/qt5pi -hostprefix /usr/local/qt5pi 这配置QT,但没有OpenGL,我有消息: ERROR: Feature '
使用QT 5.5,Qmake和MSVC 13来编译带有一些基本openGL函数调用的基本样板qt应用程序,我会得到以下链接器错误: glwidget.obj:-1: error: LNK2019: unresolved external symbol __imp__glClear@4 referenced in function "public: virtual void __thiscall GLWidget::initializeGL(void)" (?initializeGL@GLWidget@@UAEXXZ) glwidget.obj:-1: error: LNK2019: unresolved external symbol __imp__glClearColor@16 referenced in function "public: virtual void __thiscall GLWidget::initializeGL(void)" (?initializeGL@G
我在OSX上使用opencv 2.4.6.1.一切都很好,但是当我尝试使用cv :: cascadeclalsifier时,会发生链接错误,这表明我未针对架构x86_64定义此符号.解决这个问题吗?谢谢. TEMPLATE = app TARGET = camera QT += multimedia multimediawidgets INCLUDEPATH += /usr/local/Cellar/opencv/2.4.6.1/include \ LIBS += -L/usr/local/Cellar/opencv/2.4.6.1/lib \ -lopencv_core \ -lopencv_imgproc \ -lopencv_features2d \ -lopencv_highgui HEADERS = \ camera.h \ imagesettings.h \ videosettings.h \
我尝试使用Qmake构建QT项目.为此,我需要Boost Library. LIBS += -L/usr/lib/ \ -lboost_system \ -lboost_filesystem 但是在运行Qmake后,这些库未添加到makefile中: LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5MultimediaWidgets -L/build/buildd/qtmultimedia-opensource-src-5.0.1/lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu/x86_64-linux-gnu -lQt5OpenGL -lQt5Multimedia -lpulse -lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread 正如预期的那样,链接器会打印许多错误,例如 /usr
请假设我要 link openCV库,通常,我将使用INCLUDEPATH添加标头,并使用LIBS variable链接库,该变量可在qmake文件,但是如果我们在大多数项目中都使用OpenCV,那么我们必须每次都包含OPENCV库,因此有什么方法可以在创建项目时自动添加OpenCV库. 我每次都使用以下命令为我的项目添加OpenCV库. INCLUDEPATH += -I/usr/local/include/opencv LIBS += -L/usr/local/lib -lopencv_stitching -lopencv_superres ...and etc. 更新 我将使用以下标题进行OpenCv4: INCLUDEPATH += /usr/local/include/opencv4 解决方案 1)您可以在mkspecs/features目录中创建一个.prf(项目功能)文件: /usr/share/qt5/mkspecs/features/o
我在Mac上有一个纯C ++/QT项目,但是我现在发现我需要调用仅在可可API中可用的几种方法.以下在此处列出的说明: http://el-el-el-tramo.blog/blog/blog/mixing-cocoa--cocoa--- and-qt 我在" .m"文件中具有C ++类实现.作为测试,我的" foo.m"文件包含以下代码(相关#include方法已被剥离为了清晰).: int foo::getMagicNumber() { NSCursor *cursor = [NSCursor new]; } 显然,我需要将.m文件添加到称为OBJECTIVE_SOURCES的QMAKE变量.我的项目.pro文件看起来像这样: TARGET = testApp CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp OBJECTIVE_SOURCES +=
过去几周我一直在研究C ++和X64组装,并希望使用QT IDE进行GUI编程.问题是我找不到一种链接和编译包含汇编代码的文件的方法.我一直在浏览Internet和此网站而没有找到任何有用的东西. 这是我到目前为止尝试过的: .pro QMAKE_CXXFLAGS += -save-temps QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = test--- TEMPLATE = app DEFINES += QT_DEPRECATED_WARNINGS QMAKE_EXTRA_COMPILERS += nasm SOURCES += main.cpp\ mainwindow.cpp\ asm.s HEADERS += mainwindow.h FORMS += mainwindow.ui mainwindow.cpp //code
由于我将今天的日期用于我的申请版本,因此我有兴趣自动填充它. 目前我正在我的项目文件中进行以下操作: VERSION = 15.4.20 但我想自动使其自动: VERSION = $$YEAR.$$MONTH.$$DAY 有什么想法吗? 解决方案 另一个选项是使用无证件qmake变量_DATE_,它均可在所有平台上使用: BUILD_YEAR = $$str_member($${_DATE_}, -4, -1) message("Build year '$${BUILD_YEAR}' out of '$${_DATE_}'") 请参阅无证件QMAKE 其他解决方案 您可以将QMAKE_POST_LINK与 之类的东西一起使用 $$version = date +%y.%m.%d 编辑 在Mac OS上您可以使用: VERSION = $$system(date +%y.%m.%d) 调整它以适合您的其他支持OS
我正在编译 c QT创建者中的代码,我需要查看预处理器输出. 我在制造中添加了-e标志,但我看不到 *.i文件: mingw32-make.exe -e -w in \qt\qt-build-desktop 请帮助. 解决方案 -e是GCC的选项,而不是制作选项,因此将其传递给不做任何事情.另外,使用-e适用于单个文件,但会破坏您的构建,因为没有生成适当的.o文件(其中包含预处理源). 虽然有效的是,将以下内容添加到.pro文件: QMAKE_CXXFLAGS += -save-temps 现在,如果您构建项目,则将源文件的预处理foo.cpp保存为foo.ii. (在OS X上使用Make+GCC测试,我认为它也适用于MingW). 编辑:刚刚得知MSVC的等效标志是 QMAKE_CXXFLAGS += -P 其他解决方案 我可以使用.pro文件中的一个(或更多)选项来吸引QT创建者生成预处理文件: QMAKE_CFLAGS_D
我遵循 mingw-64-bit ,使用选项A:在msys2-shell和mingw-w64 win64 shell中构建QT. gcc -v说: Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../gcc-6.3.0/configure --build=x86_64-w64-mingw32 --disable-isl-version-check --disable-libstdcxx-debug --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-rpath --disable-symvers
如何禁用QT创建者中的-Wmissing-field-initializers警告? 我有一个QT创建者/mingw项目,当我零定位结构时: void test() { struct foo {int a, b;}; foo a = {}; } 我得到了此警告: test.cpp:12: warning: missing initializer for member 'test()::foo::b' [-Wmissing-field-initializers] foo a = {}; ^ 我尝试了: QMAKE_CXXFLAGS += -Wnomissing-field-initializers 但是没有这样的选择. QMAKE_CXXFLAGS -= -Wmissing-field-initializers也没有起作用. 实际上未在命令行中明确指定-Wmissing-field
我正在用mingw32和g ++.在窗口上编译QT5.7.4.9.3. 执行configure.bat时,我会收到此错误: C:\qt-everywhere-opensource-src-5.7.0\configure.bat -prefix C:\Qt-5.7 -skip qttools -skip qtwebchannel -skip qtwebengine -skip qtcharts -skip qtdatavis3d -platform win32-g++ c:\ qt-everywhere-opensource-src-5.7.0 \ qtbase/qmake/qmake/library/qmakebuiltins.cpp:在成员函数中 c:\ qt- everywhere-opensource-src-5.7.0 \ qtbase/qmake/qmake/library/qmakebuiltins.cpp:419:94:错误:在此范围中未声明:'_ popen'
我正在使用qmake为我们正在开发的小型QT C ++应用程序生成mingw32 makefiles.我的问题:所有这些双/四核CPU都闲着坐在那里,而只有一个线程在做建筑物.为了使我尝试通过的事物并行化 - jobs 4要制作,但问题是qmake在其中生成了一个通用的makefile,用-f. 是否有可能强迫QMAKE添加生成Makefile时做出的选项?或者,也许还有另一种设置Qmake之外的选项的方法?我无法编辑特定的makefile,因为它是自动化的每个构建的. 解决方案 滥用$MAKE在所有情况下通过选项都不起作用.通常(例如,在UNIX上的QT的配置脚本中),它以双引号("$MAKE")封闭,以允许命令包含空格.我知道,因为我在停止工作之前使用了相同的技巧.然后,qt支持建议(正确)使用$MAKEFLAGS,如 set MAKEFLAGS=-j4 make 其他解决方案 这对我有用: 设置make_command = mingw32 -make -
我听说可以使用QT Creator构建非QT应用程序(例如简单的C ++ Helloworld).我下载并安装了QT创建者,并尝试使用它编译简单的代码.但是我没有成功:创建者需要qmake来创建makefile. 尽管我下载的软件包包括mingw,但其中没有qmake. 我仍然想像IDE一样使用它来创建简单的C ++源并使用mingw编译它们.是否可以在不安装整个平台的情况下使用QT创建者? 解决方案 QT创建者支持 cmake project,您只需要选择打开一个文件或项目并选择项目的root cmakelist.txt. 如果要定义自己的构建工作流,可以删除默认的构建步骤并创建自己的自定义构建步骤( qt creator构建步骤). 其他解决方案 我认为您可以修改构建步骤以删除QMAKE并使用自定义制作文件. 其他解决方案 您完全可以! 您可以自己编写一个.pro文件,并将其用作项目文件,无需链接/使用任何QT库. 在项目/汇编参