簡體   English   中英

使用 CMake 分發 Qt5 控制台應用程序

[英]Distribute a Qt5 console application using CMake

我徒勞地嘗試使用 CMake 分發一個基本的 Qt 控制台應用程序。

讓我們考慮這兩個文件:

主程序

#include <QDebug>

int main(int argc, char *argv[])
{
    qDebug() << "Hello Wolrd!";
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)

project(HelloWorld)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

find_package(Qt5Widgets REQUIRED)

add_executable(${PROJECT_NAME} main.cpp)

qt5_use_modules(${PROJECT_NAME} Widgets)

接下來我編譯main.cpp文件:

$ cmake .

-- The C compiler identification is AppleClang 10.0.1.10010046
-- The CXX compiler identification is AppleClang 10.0.1.10010046
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/HelloWorld

$ make

Scanning dependencies of target HelloWorld_autogen
[ 25%] Automatic MOC for target HelloWorld
[ 25%] Built target HelloWorld_autogen
Scanning dependencies of target HelloWorld
[ 50%] Building CXX object CMakeFiles/HelloWorld.dir/HelloWorld_autogen/mocs_compilation.cpp.o
[ 75%] Building CXX object CMakeFiles/HelloWorld.dir/main.cpp.o
[100%] Linking CXX executable HelloWorld
[100%] Built target HelloWorld

我得到一個HelloWorld二進制文件。

當我嘗試在另一台沒有安裝 Qt 的計算機上執行后一個文件時,問題就出現了。 我收到以下錯誤:

dyld: Library not loaded: @rpath/QtWidgets.framework/Versions/5/QtWidgets
  Referenced from: /path/to/HelloWorld/./HelloWorld
  Reason: image not found
./test.sh: line 4: 68737 Abort trap: 6           ./HelloWorld

使它作為獨立應用程序工作缺少什么?

環境:

  • MacOs 莫哈韋沙漠 (10.14.4)
  • Qt 5.10.1

最簡單的方法是靜態鏈接 Qt。 查看有關為 macOS 部署的文檔。

請注意,Qt 是根據 LGPL 獲得許可的,這可能會對靜態鏈接產生影響。 查看此常見問題解答了解詳細信息。

您也可以使用捆綁包和框架,但我不確定它與控制台應用程序的配合情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM