从命令行构建Qt Xcode项目

44

我已经花了几个小时在Qt上玩耍了。我发现qmake在Mac OS X上生成的是Xcode项目文件,而不是好老的makefiles。我不想每次想要构建“Hello, world”时都启动Xcode。

如何让qmake生成常规的makefiles呢?如果这在Mac上无法做到,那么如何从命令行编译.xcodeproj文件呢?

我尝试过xcodebuild -project myProject -alltargets。我得到了很多输出,然后是Abort trap


看起来是一个错误的目标。尝试指定一个已知的好目标,或者不带参数(将构建默认目标)并查看发生了什么。 - Olie
你可以清楚地说明如何将QMAKESPEC变量设置为macx-g++吗?我在终端中输入了QMAKESPEC=macx-g++,但是当我输入qmake命令时,它无法为我生成一个makefile。 - issac
4个回答

60
$ man xcodebuild

因此,一个典型的命令可能如下:

$ xcodebuild -project myProject.xcodeproj -alltargets

6
为了让它正常工作,我必须写出我的项目文件的完整名称,例如,myProject.xcodeproj。 - Jay Conrod

21

Trolltech 的开源 Qt 二进制安装程序在 OS X 上默认使用 .xcodeproj 文件,当你运行 qmake 时会创建它。但我不使用 XCode 进行编辑,所以打开它来编译项目很麻烦。

要从 Terminal.app 编译您的项目,只需将环境变量 QMAKESPEC 设置为 macx-g++。

如果您只想从终端编译特定项目,请进入该目录并运行

qmake -spec macx-g++
当你运行 qmake 时,它会创建一个 Makefile 文件,你可以通过运行 make 命令来使用它。

你能清楚地说明如何设置 QMAKESPEC 变量为 macx-g++ 吗?我在终端上输入了 QMAKESPEC=macx-g++,但是当我执行 qmake 命令时,它无法为我生成 Makefile。 - issac
2
@isaac export QMAKESPEC=macx-g++(如果您至少使用sh) - Alex Jasmin

2
尝试以下方法。它一定会起作用。
xcodebuild -project myProject.xcodeproj -alltargets

我在大多数项目中都使用了这种方法。


0

看一下你的回溯中的这部分:

# 2008-12-18 20:40:52.333 xcodebuild[1070:613] [MT] ASSERTION FAILURE in /SourceCache/DevToolsBase/DevToolsBase-921/pbxcore/FileTypes/PBXCFBundleWrapperFileType.m:174 # Details: path should be a non-empty string, but it's an empty string # Object: # Method: -subpathForWrapperPart:ofPath:withExtraFileProperties: # Thread: {name = (null), num = 1}

这意味着某些东西,可能是你的配置变量之一,在需要引用文件时为空。我想知道的是,也许你的项目中有一个额外的目标无法正常工作,因此使用-alltargets构建是导致问题的原因。

我刚刚在我的一个项目上测试了没有任何参数的xcodebuild——它默认构建了我的项目而没有错误。如果你尝试不带参数运行它会发生什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接