Qt MacOS - 正确的工作目录?

时间:2017-06-28 20:50:49

标签: c++ macos qt macos-sierra

我之前从未使用过Mac,但我正在使用Qt 5.6.2在MacOS 10.12.5上构建一些Qt应用程序。当我从Qt Creator运行应用程序时,我收到了错误:

Failed to start program. Path or permissions wrong?

如果我尝试调试,我收到错误:

Unable to start LLDB "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb": No such file or directory

经过一番调查后,我发现问题似乎与Qt Creator项目设置中的工作目录有关。如果构建目录是:

/Users/username/dev/build-MyApp-Desktop_Qt_5_6_2_clang_64bit-Debug

Qt Creator会将工作目录设置为:

/Users/username/dev/build-MyApp-Desktop_Qt_5_6_2_clang_64bit-Debug/MyApp.app/Contents/MacOS

我发现如果你将工作目录更改为与build目录相同(就像在Windows中一样),这可以解决问题,因此程序将运行并调试而不会出现问题。但是,由于我是Mac新手,我担心这是错误的做法,可能会为测试创造一个不适当的环境。

将工作目录更改为与构建目录相同的解决此问题的最佳解决方案,还是有更好的解决方案?

为什么Qt Creator在导致应用程序无法运行时将/MyApp.app/Contents/MacOS附加到工作目录?

1 个答案:

答案 0 :(得分:0)

我找到了问题的根源,它与工作目录无关,但与我改变的其他设置有关。不太可能有其他人会遇到这个问题,但我会解释。默认情况下,Qt Creator将此目录结构用于构建:

[Build-Directory]-debug/debug - debug build goes here
[Build-Directory]-debug/release - always empty
[Build-Directory]-release/debug - always empty
[Build-Directory]-release/release - release build goes here

这看起来很傻,所以我从默认的构建目录中删除了-%{CurrentBuild:Name},这使得目录结构更加明智:

[Build-Directory]/debug - debug build goes here
[Build-Directory]/release - release build goes here

在Linux上,默认情况下不会创建调试和发布子目录,因此要在同一个构建目录结构中工作,我必须将以下行添加到我的.pro文件中:

CONFIG += debug_and_release debug_and_release_target

当我在Mac上构建时,似乎这些设置导致了很多问题。运行和调试程序没有工作,图标没有设置(ICON = myicon.icns没有工作)。恢复默认构建目录(最后带-%{CurrentBuild:Name})并从.pro文件中删除该行解决了Mac上的问题。

我的自闭症真的让我花了很多时间。我无法忍受这样的事实:-debug / release和-release / debug目录完全是冗余的并且总是空的。不幸的是,更改设置最终会使事情变得更糟。我出去吃巧克力......