ununtu 下命令行编译qt文件
IDE 将一切都安排好了,但我还是喜欢清楚地掌控一切的感觉, cmake 对于程序员是个好东西, 我更喜欢使用他。
首先,安装wsl2 : 网上教程很多,不赘述
其次,安装ununtu 最新版本20.04.LTS
期间出现一个问题:ubuntu 下载总出错。然后,重装应用商店,问题解决。
下载后,安装ubuntu, 点击,打开ubuntu, 设置用户名,密码就ok了。
然后是命令行安装qt .
1 sudo apt-get update 2 sudo apt-get install build-essential 3 sudo apt-get install qtcreator 4 sudo apt-get install qt5-default 5 sudo apt-get install libfontconfig1 6 sudo apt-get install mesa-common-dev 7 sudo apt-get upgrade
qt的安装有个安装器,非常方便,但要图形界面。尝试装了xming ,一系列设置,运行qtcreator 后,xming 啥反应都没。然后。。。。就放弃了,这不重要。
接下来,开始实验代码:
有两个并行目录:
untitle2
untitle3
其中,untitle3 编译出一个cmd3的包,并为untitle2所用
untitle2 目录下的CMakeLists.txt
1 cmake_minimum_required(VERSION 3.14) 2 3 project(untitled2 LANGUAGES CXX) 4 5 set(QT_DIR "/usr/lib/x86_64-linux-gnu/cmake/Qt5") 6 set(Qt5_DIR ${QT_DIR}) 7 8 set(CMAKE_INCLUDE_CURRENT_DIR ON) 9 10 set(CMAKE_AUTOUIC ON) 11 set(CMAKE_AUTOMOC ON) 12 set(CMAKE_AUTORCC ON) 13 14 set(CMAKE_CXX_STANDARD 11) 15 set(CMAKE_CXX_STANDARD_REQUIRED ON) 16 17 find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) 18 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) 19 20 add_subdirectory(../untitled3 cmd_binary_dir) 21 list(APPEND EXTRA_INCLUDE ../untitled3) 22 list(APPEND EXTRA_LIBS cmd3) 23 24 25 add_executable(untitled2 26 main.cpp 27 ) 28 target_link_libraries(untitled2 29 Qt${QT_VERSION_MAJOR}::Core 30 ${EXTRA_LIBS} 31 ) 32 33 target_include_directories(untitled2 PUBLIC 34 "${PROJECT_BINARY_DIR}" 35 "${EXTRA_INCLUDE}" 36 )
untitle3下的CMakeLists.txt
1 cmake_minimum_required(VERSION 3.14) 2 3 project(cmd3 LANGUAGES CXX) 4 5 set(CMAKE_INCLUDE_CURRENT_DIR ON) 6 set(CMAKE_AUTOUIC ON) 7 set(CMAKE_AUTOMOC ON) 8 set(CMAKE_AUTORCC ON) 9 set(CMAKE_CXX_STANDARD 11) 10 set(CMAKE_CXX_STANDARD_REQUIRED ON) 11 12 find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) 13 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) 14 15 add_library(cmd3 SHARED 16 untitled3_global.h 17 untitled3.cpp 18 untitled3.h 19 ) 20 21 target_link_libraries(cmd3 PRIVATE Qt${QT_VERSION_MAJOR}::Core) 22 23 target_compile_definitions(cmd3 PRIVATE UNTITLED3_LIBRARY)
开始编译出了点小故障,总提示找不到cmd3.so, 手工编译untitled3,是成功的,最后发现cmakefile书写上有点小问题,解决后,编译还是不行。估计是cmake 不会覆盖已生成的一些文件,造成错误无法修正。
新开了一个编译目录,编译,一次性通过
----- 后记:
在实际开发中,发现一个问题,websockets 包并没有默认安装。采用下列命令:
sudo apt install libqt5websockets5-dev -y
执行后,有个提示,要用 apt --fix-broken install 去修正一下, 运行一下这个命令。然后,程序就可以使用这个qt5websockets 这些包了。