Qt MacOS - 正确的工作目录?
Qt MacOS - Correct Working Directory?
我以前从未使用过 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
我发现,如果将工作目录更改为与构建目录相同(如 Windows 中的那样),这将解决问题,因此程序将 运行 并在没有调试的情况下进行调试问题。但是,由于我是 Mac 的新手,我担心这是错误的做法,可能会创建不合适的测试环境。
将工作目录更改为与构建目录相同是解决此问题的最佳解决方案,还是有更好的解决方案?
为什么 Qt Creator 将 /MyApp.app/Contents/MacOS 附加到工作目录导致应用程序无法 运行?
我找到了问题的根源,它与工作目录无关,但与我更改的其他设置有关。其他人不太可能遇到这个问题,但我会解释。默认情况下,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 上,默认情况下不会创建 debug 和 release 子目录,因此要获得相同的构建目录结构,我必须将以下行添加到我的 .pro 文件中:
CONFIG += debug_and_release debug_and_release_target
当我在 Mac 上构建时,这些设置似乎导致了很多问题。 运行 并且调试程序无效,并且未设置图标(ICON = myicon.icns
无效)。恢复到默认构建目录(最后是 -%{CurrentBuild:Name}
)并从我的 .pro 文件中删除该行解决了 Mac.
上的问题
我的自闭症真的让我在那里浪费了很多时间。我无法忍受这样一个事实,即存在完全多余且始终为空的 -debug/release 和 -release/debug 目录。不幸的是,更改设置最终使事情变得更糟。我要出去吃巧克力...
我以前从未使用过 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
我发现,如果将工作目录更改为与构建目录相同(如 Windows 中的那样),这将解决问题,因此程序将 运行 并在没有调试的情况下进行调试问题。但是,由于我是 Mac 的新手,我担心这是错误的做法,可能会创建不合适的测试环境。
将工作目录更改为与构建目录相同是解决此问题的最佳解决方案,还是有更好的解决方案?
为什么 Qt Creator 将 /MyApp.app/Contents/MacOS 附加到工作目录导致应用程序无法 运行?
我找到了问题的根源,它与工作目录无关,但与我更改的其他设置有关。其他人不太可能遇到这个问题,但我会解释。默认情况下,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 上,默认情况下不会创建 debug 和 release 子目录,因此要获得相同的构建目录结构,我必须将以下行添加到我的 .pro 文件中:
CONFIG += debug_and_release debug_and_release_target
当我在 Mac 上构建时,这些设置似乎导致了很多问题。 运行 并且调试程序无效,并且未设置图标(ICON = myicon.icns
无效)。恢复到默认构建目录(最后是 -%{CurrentBuild:Name}
)并从我的 .pro 文件中删除该行解决了 Mac.
我的自闭症真的让我在那里浪费了很多时间。我无法忍受这样一个事实,即存在完全多余且始终为空的 -debug/release 和 -release/debug 目录。不幸的是,更改设置最终使事情变得更糟。我要出去吃巧克力...