国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT轉(zhuǎn)型Visual Studio(qmake項(xiàng)目到cmake項(xiàng)目的移植)

這篇具有很好參考價(jià)值的文章主要介紹了QT轉(zhuǎn)型Visual Studio(qmake項(xiàng)目到cmake項(xiàng)目的移植)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

由于工作需要,同時(shí)也為了方便以后的集成升級,希望將之前用Qt creator qmake開發(fā)的項(xiàng)目移植到cmake項(xiàng)目中,并使用Visual Studio 進(jìn)行后續(xù)開發(fā),本文主要用以記錄該過程中的常規(guī)步驟和遇到的特殊情況。

qmake項(xiàng)目

在一開始,為了降低開發(fā)難度以及快速完成業(yè)務(wù)開發(fā),我們使用Qt Creator原生編譯器以及qmake來進(jìn)行軟件界面研發(fā)。編寫pro文件來生成makefile,makefile將用于指導(dǎo)后續(xù)的各種編譯器生成可執(zhí)行文件。(關(guān)于makefile的介紹可以參考這篇文章添加鏈接描述)
下面我們大致介紹一下該項(xiàng)目原本的pro文件。其中我刪減了部分無關(guān)緊要的內(nèi)容,只保留將被轉(zhuǎn)換為cmake工程所需要的東西。

QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 添加xml文件讀寫功能
QT+=xml
CONFIG += c++11
include(D:/software/QT5.14.0/package/VTK-8.2.0/VTK-8.2.0.pri)
# 如果要使用VTKACtorToOSG功能 需要引入 osg庫
INCLUDEPATH +=D:/BaiduNetdiskDownload/install/include
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losg
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgd
?
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgViewer
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgViewerd
?
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgDB
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgDBd
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -lOpenThreads
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -lOpenThreads
SOURCES += \
    customUnit/dockwidget.cpp \
    customUnit/mycustomslider.cpp \
    ...
HEADERS += \
    customUnit/dockwidget.h \
    customUnit/mycustomslider.h \
    ...
FORMS += \
    customUnit/dockwidget.ui \
   ...

其中包含了Qt的幾個(gè)模塊功能庫,vtk庫,以及osg庫中的幾個(gè)模塊。
VTK庫中僅包含了MSVC編譯的release版本。
OSG庫也是用的MSVC編譯的release版本。
Qt庫使用MSVC編譯的包含debug版本和release版本。
編譯器使用對應(yīng)的MSVC 編譯器。
這里有個(gè)遺留問題,開發(fā)設(shè)備上原本的Qt creator只有Mingw的編譯器,為了讓其支持MSVC編譯,我們在Visual Studio 中下載了MSVC2017版本來使用,但Qtcreator無法自動(dòng)識別該編譯器,我們手動(dòng)配置一個(gè)自定義的編譯器選項(xiàng)去查找到它(這個(gè)問題在后續(xù)的移植工作中會在導(dǎo)入庫的時(shí)候再次出現(xiàn))。

到cmake工程的移植

為了方便,我們先使用Qtcreator創(chuàng)建了一個(gè)cmake工程,讓它幫我們先生成一部分cmakelist.txt代碼。

cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX COMPILER WORKS 1)
project(Window_cmake_version )

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Widgets REQUIRED)

if(ANDROID)
  add_library(Window_cmake_version SHARED
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
else()
  add_executable(Window_cmake_version 
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
endif()

target_link_libraries(Window_cmake_version PRIVATE Qt5::Widgets)

其中自動(dòng)包含了Qt的庫的引入。
我們一一對應(yīng)將pro中的內(nèi)容轉(zhuǎn)為cmakelist.txt中的內(nèi)容。
qmake

QT += core gui
QT += widgets
QT+=xml

cmake

find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Xml REQUIRED)
find_package(Qt5 COMPONENTS Gui REQUIRED)
target_link_libraries(Window_cmake_version PRIVATE Qt5::Widgets)
target_link_libraries(Window_cmake_version PRIVATE Qt5::Xml)
target_link_libraries(Window_cmake_version PRIVATE Qt5::Gui)

qmake

//為了便于引入庫,我們在vtk庫中編寫了pri文件,實(shí)際上它只是簡化了導(dǎo)入lib和頭文件的過程
include(D:/software/QT5.14.0/package/VTK-8.2.0/VTK-8.2.0.pri)

cmake

//這里我們使用cmake查找包的方式來導(dǎo)入vtk庫
find_package(VTK REQUIRED)
if(VTK_FOUND)
  message(STATUS "found VTK_DIR")
else(VTK_FOUND)
  message(FATAL_ERROR "VTK not found. Please set VTK_DIR")
endif(VTK_FOUND)
include(${VTK_USE_FILE})
target_link_libraries(Window_cmake_version
        PRIVATE optimized ${VTK_LIBRARIES})

qmake

# 如果要使用VTKACtorToOSG功能 需要引入 osg庫(只使用部分庫,不需要全引入) 這里實(shí)際上只用到了release版本
INCLUDEPATH +=D:/BaiduNetdiskDownload/install/include
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losg
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgd
?
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgViewer
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgViewerd
?
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgDB
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -losgDBd
win32:CONFIG(release, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -lOpenThreads
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/BaiduNetdiskDownload/install/lib/ -lOpenThreads

cmake

# 查找OSG 庫  該方式也適用于vtk庫的導(dǎo)入
target_include_directories(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/include)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osg.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osgViewer.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osgDB.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/OpenThreads.lib)

qmake

SOURCES += \
    customUnit/dockwidget.cpp \
    customUnit/mycustomslider.cpp \
    ...
HEADERS += \
    customUnit/dockwidget.h \
    customUnit/mycustomslider.h \
    ...
FORMS += \
    customUnit/dockwidget.ui \
   ...

cmake

set(HEADERS 
    customUnit/dockwidget.h 
    customUnit/mycustomslider.h 
 	...
)
set(UI 
    customUnit/dockwidget.ui 
  	...

)
set(SOURCES
    customUnit/dockwidget.cpp 
    customUnit/mycustomslider.cpp 
	...
)
add_executable(Window_cmake_version 
    ${SOURCES} ${UI} ${HEADERS} )

到這里我們大致上就實(shí)現(xiàn)了pro文件到cmakelist.txt文件的遷移。
最終生成的cmakelist.txt文件

cmake_minimum_required(VERSION 3.5)
#set(CMAKE_PREFIX_PATH "D:/software/QT5.14.0/5.14.0/mingw73_64") 
project(Window_cmake_version)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#set (CMAKE_CXX COMPILER WORKS 1)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Xml REQUIRED)
find_package(Qt5 COMPONENTS Gui REQUIRED)
set(HEADERS 
    customUnit/dockwidget.h 
    customUnit/mycustomslider.h 
	...
)
set(UI 
    customUnit/dockwidget.ui 
	...

)
set(SOURCES
    customUnit/dockwidget.cpp 
    customUnit/mycustomslider.cpp 
	...
)
# 查找 VTK 庫
#find_package(VTK REQUIRED PATHS D:/software/QT5.14.0/package/VTK-8.2.0/lib/cmake/vtk-8.2)
find_package(VTK REQUIRED)
if(VTK_FOUND)
  message(STATUS "found VTK_DIR")
else(VTK_FOUND)
  message(FATAL_ERROR "VTK not found. Please set VTK_DIR")
endif(VTK_FOUND)
 include(${VTK_USE_FILE})
add_executable(Window_cmake_version 
    ${SOURCES} ${UI} ${HEADERS} )
# 查找OSG 庫
target_include_directories(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/include)
#add_executable(untitled11)
#add_executable(untitled11 main.cpp )
target_link_libraries(Window_cmake_version PRIVATE Qt5::Widgets)
target_link_libraries(Window_cmake_version PRIVATE Qt5::Xml)
target_link_libraries(Window_cmake_version PRIVATE Qt5::Gui)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osg.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osgViewer.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/osgDB.lib)
target_link_libraries(Window_cmake_version PRIVATE D:/BaiduNetdiskDownload/install/lib/OpenThreads.lib)
target_link_libraries(Window_cmake_version
        PRIVATE optimized ${VTK_LIBRARIES})

實(shí)際運(yùn)行后我們遇到了幾個(gè)問題:

  1. cmakelist find_find_package() 方式找包機(jī)制找到了環(huán)境中的vtk8.1的包,這并不是我們想要的8.2的包,同樣qt庫也出現(xiàn)了一樣的問題,找到了Mingw的版本庫,這必然是無法接受的,目前的解決方案是去CMakeSettings.json中手動(dòng)修改它自動(dòng)尋找填充的項(xiàng)。應(yīng)該有更好的解決方案,希望不吝賜教。
    QT轉(zhuǎn)型Visual Studio(qmake項(xiàng)目到cmake項(xiàng)目的移植),QT/C++/項(xiàng)目開發(fā),qt,visual studio,開發(fā)語言,qmake,cmake,c++

  2. 使用MSVC release版本編譯后,dll鏈接錯(cuò)誤(無法定義到入口xxx等問題),這和qt打包應(yīng)用程序類似,需要把相關(guān)dll都收集過來扔到可執(zhí)行程序目錄下即可解決,如果有更好的解決方案,也希望評論留言交流一下。

  3. 相關(guān)庫dll都收集完后依然運(yùn)行時(shí)報(bào)錯(cuò):

    This application failed to start because it could not find or load the Qt platform plugin “windows”

    Reinstalling the application may fix this problem.

    解決辦法:

    QT為了簡化生成發(fā)布版本,特別提供了工具 “windeployqt.exe”,這個(gè)工具在 "…\Qt5.8.0\5.8\msvc2017_64\bin"的 目錄下,通過該命令,可以解決上述錯(cuò)誤。
    打開控制臺窗口
    設(shè)置搜索路徑以便系統(tǒng)可以搜索到 “windeployqt.exe”
    在windeployqt.exe目錄下,運(yùn)行 “windeployqt.exe sample.exe”, 所需要的QT運(yùn)行庫就自動(dòng)拷貝到目標(biāo)程序目錄了。如果運(yùn)行報(bào)錯(cuò),重新輸入為:./windeployqt.exe sample.exe文章來源地址http://www.zghlxwxcb.cn/news/detail-703383.html

到了這里,關(guān)于QT轉(zhuǎn)型Visual Studio(qmake項(xiàng)目到cmake項(xiàng)目的移植)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • VSIX:C#項(xiàng)目 重命名所有標(biāo)識符(Visual Studio擴(kuò)展開發(fā))

    VSIX:C#項(xiàng)目 重命名所有標(biāo)識符(Visual Studio擴(kuò)展開發(fā))

    ? ? ? ? 出于某種目的(合法的,真的合法的,合同上明確指出可以這樣做),我準(zhǔn)備了一個(gè)重命名所有標(biāo)識符的VS擴(kuò)展,用來把一個(gè)C#庫改頭換面,在簡單的測試項(xiàng)目上工作很滿意,所有標(biāo)識符都被準(zhǔn)確替換。我還嘗試用在C++項(xiàng)目上,問題就比較多了,因?yàn)閂S并不能準(zhǔn)確識別

    2024年02月05日
    瀏覽(25)
  • Visual Studio Code 常見的配置、常用好用插件以及【vsCode 開發(fā)相應(yīng)項(xiàng)目推薦安裝的插件】

    把插件的更新也一起取消了 字體對開發(fā)也很重要,不同字體,字母形態(tài)都不太一樣,尤其是標(biāo)點(diǎn)符號,逗號和分號的區(qū)分,有的字體看著這兩者就很像 這樣打開了很多個(gè)文件,就不會導(dǎo)致有的打開的文件被隱藏 相當(dāng)于idea 查看當(dāng)前類或接口的結(jié)構(gòu) Structure 支持快捷鍵與鼠標(biāo)右

    2023年04月16日
    瀏覽(60)
  • Visual Studio連接Linux服務(wù)器編譯CMake項(xiàng)目,生成在Linux上運(yùn)行的程序

    Visual Studio連接Linux服務(wù)器編譯CMake項(xiàng)目,生成在Linux上運(yùn)行的程序

    window系統(tǒng):Windows 10 企業(yè)版 64位操作系統(tǒng) Linux系統(tǒng):BigCloud Enterprise Linux 7.8 (Core) Visual Studio:Microsoft Visual Studio Enterprise 2019 版本 16.10.4 根據(jù)Microsoft官網(wǎng)文檔介紹, 開始之前 首先,請確保已安裝 Visual Studio Linux 工作負(fù)載,包括 CMake 組件。 它屬于 Visual Studio 安裝程序中的“使用

    2024年02月13日
    瀏覽(27)
  • 【無標(biāo)題】visual studio2019+Qt5.15.2+PCL1.12.1+vtk9.1.0+cmake3.22.2

    【無標(biāo)題】visual studio2019+Qt5.15.2+PCL1.12.1+vtk9.1.0+cmake3.22.2

    安裝VS------安裝Qt-------安裝PCL------安裝cmake-----安裝VTK-----環(huán)境配置 安裝用了兩天時(shí)間 1環(huán)境搭建 1.1 Visual Studio 2019 (PCL所需版本) https://my.visualstudio.com/Downloads?q=visual%20studio%202019wt.mc_id=o msft vscom~older-downloads 1.2 Qt安裝 https://download.qt.io/archive/online install 選擇online install ●選擇安裝

    2024年02月16日
    瀏覽(23)
  • asp.net審計(jì)項(xiàng)目管理系統(tǒng)VS開發(fā)sqlserver數(shù)據(jù)庫web結(jié)構(gòu)c#編程Microsoft Visual Studio

    asp.net審計(jì)項(xiàng)目管理系統(tǒng)VS開發(fā)sqlserver數(shù)據(jù)庫web結(jié)構(gòu)c#編程Microsoft Visual Studio

    一、源碼特點(diǎn) ? ? ? ? asp.net審計(jì)項(xiàng)目管理系統(tǒng) 是一套完善的web設(shè)計(jì)管理系統(tǒng),系統(tǒng)具有完整的源代碼和數(shù)據(jù)庫,系統(tǒng)主要采用B/S模式開發(fā)。開發(fā)環(huán)境為vs2010,數(shù)據(jù)庫為sqlserver2008,使用c#語言 開發(fā) 二、功能介紹 (1)科室管理:對科室信息進(jìn)行添加、刪除、修改和查看 (2)權(quán)限管

    2024年02月11日
    瀏覽(25)
  • 【QtQuick3D學(xué)習(xí)】使用Qt Design Studio設(shè)計(jì)UI并導(dǎo)入Qt Creator項(xiàng)目中使用——基于C++和Cmake

    【QtQuick3D學(xué)習(xí)】使用Qt Design Studio設(shè)計(jì)UI并導(dǎo)入Qt Creator項(xiàng)目中使用——基于C++和Cmake

    新版本中項(xiàng)目文件全部放在了一起,見 【QtQuick3D學(xué)習(xí)】使用Qt Creator創(chuàng)建Qt Design Studio項(xiàng)目測試運(yùn)行——基于C++和Cmake 【QtQuick3D學(xué)習(xí)】使用Qt Design Studio創(chuàng)建項(xiàng)目并使用Qt Creator打開測試運(yùn)行——基于C++和Cmake 這里測試前后端分離,即使用Qt Design Studio設(shè)計(jì)前端和交互邏輯,C++寫后

    2024年02月01日
    瀏覽(51)
  • CMake入門教程【高級篇】qmake轉(zhuǎn)cmake

    CMake入門教程【高級篇】qmake轉(zhuǎn)cmake

    ?? 「CSDN主頁」 :傳送門 ?? 「Bilibil首頁」 :傳送門 ?? 「動(dòng)動(dòng)你的小手」 : 點(diǎn)贊 ?? 收藏 ?? 評論 ??

    2024年01月25日
    瀏覽(37)
  • CMake入門教程【實(shí)戰(zhàn)篇】使用開源庫cmake-modules簡化項(xiàng)目開發(fā)與維護(hù)

    本教程介紹了rpavlik/cmake-modules,一個(gè)CMake模塊集合,旨在簡化和優(yōu)化CMakeLists.txt文件的編寫和維護(hù)工作。該集合尤其對虛擬現(xiàn)實(shí)和物理模擬包的開發(fā)者有用,同時(shí)也包含通用實(shí)用模塊和針對舊版CMake的補(bǔ)丁或解決方案。 項(xiàng)目托管在GitHub上,可通過鏈接訪問:rpavlik/cmake-modules 查

    2024年01月15日
    瀏覽(58)
  • 使用 Visual Studio Code 調(diào)試 CMake 腳本

    使用 Visual Studio Code 調(diào)試 CMake 腳本

    之前被引入到 Visual Studio 中的 CMake 調(diào)試器,現(xiàn)已在 Visual Studio Code 中可用。 也就是說,現(xiàn)在你可以通過在 VS Code 中安裝 CMake 工具擴(kuò)展,來調(diào)試你的 CMakeLists.txt 腳本了。是不是很棒? Visual C++ 開發(fā)團(tuán)隊(duì)和 CMake 的維護(hù)者 Kitware 一直密切合作,目的是將我們的 CMake 調(diào)試器實(shí)現(xiàn)集成

    2024年02月13日
    瀏覽(26)
  • Visual Studio 2022 cmake配置opencv開發(fā)環(huán)境

    Visual Studio 2022 cmake配置opencv開發(fā)環(huán)境

    這里我用的是 widnows 10 64位 , Visual Studio 用的 Visual Studio Community 2022 (社區(qū)版) 對于 Android 開發(fā)工程師來說,為什么要使用 Visual Studio 呢 ? 因?yàn)樵?Visual Studio 中開發(fā)調(diào)試 OpenCV 方便,可以開發(fā)調(diào)試好后,再移植到 Android 中。 官方地址在這里 : 官方下載地址 不過官方下載地址可能

    2024年02月07日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包