我main.cpp在c:\test文件夹中并执行以下操作:
qmake -project
qmake -tp vc test.pro
Run Code Online (Sandbox Code Playgroud)
答案是:
WARNING: Unable to generate output for: C:/test//Makefile.Debug [TEMPLATE vcapp]
WARNING: Unable to generate output for: C:/test//Makefile.Release [TEMPLATE vcapp]
Run Code Online (Sandbox Code Playgroud)
但是,我不需要make文件.我需要.vcproj!
环境:Windows XP Pro SP3,MSVC 7.1和8.0.Qt安装在C:\Qt\2010.02(LGPL版本)中.命令从Qt命令提示符运行.
它出什么问题了?如何生成.sln/.vcproj?我可以为MSVC 7.1和8.0生成它们吗?
我有一个使用qmake的Qt项目.为了提高清晰度和可读性,我想保留
分离.
所以我的第一步是将源文件放入src/sub目录:
myproject/
myproject.pro
src/
main.cpp
MainWindow.ui
...
Run Code Online (Sandbox Code Playgroud)
这样我就将源文件与构建系统(*.pro)分开了.然而,当我然后运行qmake其次make,将所生成的文件(目标文件等)被放置到主项目文件夹中:
myproject/
myproject.pro
Makefile
main.o
ui_MainWindow.h
...
src/
main.cpp
MainWindow.ui
...
Run Code Online (Sandbox Code Playgroud)
好吧,至少他们没有被放入src/文件夹,但我如何指定他们被放入另一个子文件夹,如build/?
myproject/
myproject.pro
Makefile
build/
main.o
ui_MainWindow.h
...
src/
main.cpp
MainWindow.ui
...
Run Code Online (Sandbox Code Playgroud)
(顺便说一下,我不关心目标二进制文件myproject放在哪里,但我想它应该直接放在项目文件夹中而不是放入build/.)
我有一个文件"settings.ini",它需要驻留在Qt可执行文件旁边.
我可以在Qt Creator中添加一个自定义构建步骤,调用类似这样的东西:
copy %{sourceDir}/settings.ini %{buildDir}/settings.ini
Run Code Online (Sandbox Code Playgroud)
到目前为止这种方法很有用,但是我想将它包含在*.pro文件中,这样我就可以把它放在我们的SVN中了.
我怎么能只用qmake/.pro文件呢?
有没有办法在.pro文件中指定要添加到生成的Makefile中的标准目标的额外命令qmake?例如,考虑一下distclean,可能需要额外的命令:
我想使用普通目标而不是自定义目标,因为我希望它在我的工作流程中完全透明.那是(再次distclean用作例子),我不想......
distclean.distclean已经是众所周知的,直观†.我发现如何在qmake生成的Makefile中添加自定义目标?,但这描述了添加自定义目标(已经记录,甚至在4.6中),而不是向现有目标添加规则.虽然它确实包含一些提示,但它们都需要添加新的自定义目标,因为在Makefile中多次指定同一目标会替换(不添加)前一个目标的命令.
我真的想尝试的唯一的事情是添加target.commands += new commands到的.pro文件作为胡乱猜测(如distclean.commands += rm \"*~\").这没有效果.
如何透明地将自定义命令添加到现有目标qmake?
† 对于distclean示例:虽然maintainer-clean也在"标准目标"列表中,但实际上我发现它很少使用,并且在任何情况下qmake都不会默认生成它; 我认为这是不合适的.
我正在尝试使用qmake在Linux上构建动态库.这是我的.pro文件:
TEMPLATE = lib
TARGET = sqxUiBase
QT += core gui
CONFIG += dll
INCLUDEPATH += ../../public/include
DEPENDPATH += .
UI_DIR += ../GeneratedFiles
RCC_DIR += ../GeneratedFiles
CONFIG(release, debug|release) {
DESTDIR = ../lib/release
LIBS += -L"../lib/release"
MOC_DIR += ../GeneratedFiles/release
OBJECTS_DIR += release
} else {
DESTDIR = ../lib/debug
LIBS += -L"../lib/debug"
MOC_DIR += ../GeneratedFiles/debug
OBJECTS_DIR += debug
}
include(sqxUiBase.pri)
Run Code Online (Sandbox Code Playgroud)
sqxUiBase.pri文件包含需要构建的文件列表.
现在,问题是无论我做什么,结果文件总是被命名sqxUiBase.so.1.0.0,有一堆符号链接(sqxUiBase.so,sqxUiBase.so.1和sqxUiBase.so.1.0)指向它.我怎样才能使它只有一个sqxUiBase.so文件而没有链接?
我想使用-rpath链接器选项来设置.so搜索路径.我想要搜索[app_path]/../lib.我已经尝试将此添加到我的qmake .pro文件中:
QMAKE_LFLAGS += -Wl,-rpath=$ORIGIN/../lib/
Run Code Online (Sandbox Code Playgroud)
但是qmake以这种方式链接我的项目:
g++ -Wl,-rpath=RIGIN/../lib/ -Wl,-O1 -o myoutput main.o [...]
Run Code Online (Sandbox Code Playgroud)
我该$ORIGIN怎么逃避?
绝对的道路是荒谬的.我们需要的所有东西 - 顺便说一下,我们所允许的 - 是使用与包含.pro文件的文件夹相同级别的文件夹进行阴影构建.否则会有错误.
但你不能只../mingw_debug举例说明.是的,这是相对的路径,但相对于什么?事实证明它与Qt Creator的当前目录相关,这完全没有意义.
%{sourceDir}也没有任何帮助.%{sourceDir}/../mingw_debug不要工作,至少在Windows上.如果有办法从sourceDir中提取父文件夹!
有人知道解决问题的方法吗?
如何将外部文件包含到"apk"中?
例:
在.pro文件存在的主目录中有"123.txt".我应该添加到pro文件中以将"123.txt"放入apk中.
我试过DEPLOYMENT,DEPLOYMENTFOLDERS.但它们只适用于Symbian和Windows CE.
我正在尝试编译qGo,安装后qt5
git clone https://github.com/pzorin/qgo.git
cd qgo
qmake
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
现在最新的错误是说找不到多媒体
# make
cd src/ && ( test -e Makefile || /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /home/jdm/Downloads/qgo/src/src.pro -o Makefile ) && make -f Makefile
Project ERROR: Unknown module(s) in QT: multimedia
make: *** [sub-src-make_first] Error 3
Run Code Online (Sandbox Code Playgroud)
我libqt5multimedia5根据这个问题猜测了这个库,但计算机说它已经存在并且错误仍然存在.
libqt5multimedia5 is already the newest version.
Run Code Online (Sandbox Code Playgroud)
还有另一个类似的问题,但用户回答了他自己的问题.我不确定它在这里是如何适用的:
我在Mac上有一个纯C++/Qt项目,但我现在发现我需要调用一些只在Cocoa API中可用的方法.按照此处列出的说明:
http://el-tramo.be/blog/mixing-cocoa-and-qt
我在".m"文件中有一个C++类实现.作为测试,我的"foo.m"文件包含以下代码(#include为清晰起见,已删除相关方法):
int foo::getMagicNumber()
{
NSCursor *cursor = [NSCursor new];
}
Run Code Online (Sandbox Code Playgroud)
显然,我需要将.m文件添加到名为的qmake变量中OBJECTIVE_SOURCES.我的项目.pro文件如下所示:
TARGET = testApp
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
OBJECTIVE_SOURCES += foo.m
HEADERS += test.h
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试编译项目时,都会收到以下错误:
foo.h:4expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'
这是指向class foo我的头文件中的文件.如果我从.m文件中删除所有cocoa调用,并将.m文件移动到SOURCES我的Qt .pro文件的部分,一切都按预期工作.
我正在使用Qt 4.6.0.
我的问题是:将Cocoa调用与Qt/C++集成的推荐方法是什么,以及我在上面的例子中做错了什么?
qmake ×10
qt ×8
makefile ×2
apk ×1
c++ ×1
cocoa ×1
linux ×1
object-files ×1
objective-c ×1
qt-creator ×1
qt4 ×1
qt5 ×1
qt5.1 ×1
target ×1
vcproj ×1
visual-c++ ×1