我是一名CMake初學者,並且爲Mac OS X創建Qt應用程序包時遇到了問題。讓我們考慮一個簡單的小部件「helloworld」應用程序,只有一個main.cpp
文件。CMake MacOS X捆綁包與BundleUtiliies Qt應用程序
// main.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QLabel lbl("Hello");
lbl.show();
return app.exec();
}
CMakeLists.txt
文件也很簡單。
# CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(QtBundle)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(SOURCES main.cpp)
find_package(Qt5Widgets REQUIRED)
add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${SOURCES})
qt5_use_modules(${PROJECT_NAME} Widgets)
我運行cmake .. -DCMAKE_PREFIX_PATH=/path/to/Qt5.5.1/
並在build
目錄下生成Makefile
。
然後我運行make
,並有我想要的QtBundle.app
目錄和QtBundle.app/Contents/MacOS/QtBundle
可執行文件,OK。
但是,當我啓動它,我得到:
This application failed to start because it could not find or load the Qt platform plugin "cocoa".
Reinstalling the application may fix this problem.
Abort trap: 6
據我理解,因爲應用程序包沒有任何Qt的東西(框架庫和插件)中發生的錯誤,所以我跑macdeployqt
和它在Bundle目錄中填充了Framework和PlugIns文件夾中的大量文件,並且應用程序能夠運行並重定位到另一個系統。
它部分解決了這個問題,但我想使用CMake和BundleUtilities以及沒有macdeployqt工具來填充軟件包。
不幸的是我沒有找到任何使用BundleUtilities進行Qt5部署的很好和簡單的例子。
有人可以幫我修改我的'helloworld'的例子,CMake自動創建可以隨時部署的軟件包嗎?
在此先感謝。
我也在尋找答案。你有沒有設法解決這個問題?我發現的一切都是來自以前的時代,或者描述得不好,也沒有顯示出來。 – light2yellow
@ light2yellow不,我不使用BundleUtilities,而是使用macdeployqt並在安裝步驟中使用cmake複製必要的文件,並使用Packages製作包。有用。 –
無論如何,我找到了一個很好的例子。看看avogadro或其他kitware項目。 – light2yellow