QT+Assimp+Cmake Windows平台使用CMake构建第三方包,搭建Assimp环境

QT+Assimp+Cmake Windows平台使用CMake构建第三方包

工具准备

  • MinGW
  • CMake
    上述软件在CSDN有一堆的安装下载教程,这里就不进行具体的安装演示了。
    由于我本身的电脑中安装了QT Creater,最新版的QT Creater中带有了Cmake,并且在安装QT Creater时,我选择了MinGW的编译环境,因此这里我直接采用QT Creater中的MinGW 与 CMake。
    QT安装目录/Tools路径下可以看到CMake与Mingw的安装路径。
    在这里插入图片描述
    将CMake和MingW的bin路径放到环境变量中。
    在这里插入图片描述

打开CMD或者Powershell,输入Cmake或者gcc能够识别即可,如果不识别,显示非CMD命令,可以尝试重启电脑后再试。
在这里插入图片描述
在这里插入图片描述

至此,所需要的MingW工具与Cmake工具就准备完成了。

编译安装第三方库

这部分内容以ASSIMP库为例。
首先下载Github上的ASSIMP源码。https://github.com/assimp/assimp
然后CMD进入到源码的路径下。
在这里插入图片描述

# 需修改路径
cmake -G"MinGW Makefiles" -B build -DCMAKE_INSTALL_PREFIX=安装路径  -DWITH_SOME_OPTIONS=ON
cmake --build build --parallel 16
cmake --build build --target install

依次运行上述命令即可完成第三方库的安装。
其中-DCMAKE_INSTALL_PREFIX即为第三方库的安装位置。
--parallel 16 为使用16个核并行编译,此处自行修改。

如果没有报错,即可看到安装完成,在源码路径出现Build目录。
在这里插入图片描述
同时在指定的安装位置出现所有需要的文件。
在这里插入图片描述
此时我们找到assimpConfig.cmake所处的路径。我的路径如下所示。这个路径我们会在后续步骤中使用。

D:/playground/third_lib_c/lib/cmake/assimp-5.2

在这里插入图片描述

调用第三方库

新建一个CMake工程测试第三方库。
工程文件结构如下所示
在这里插入图片描述
其中CMakeLists.txt.user是使用QT打开Cmake工程产生的文件。

CMakeList.txt的内容是

# cmake的属性
cmake_minimum_required(VERSION 3.18)

# 设置默认的模式 Debug或者Release
if (NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

# C++的编译器选项
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# 第三方库路径 第二步获取得到
set(assimp_DIR D:/playground/third_lib_c/lib/cmake/assimp-5.2)

# project 名字
project(testassimp LANGUAGES CXX)

# 寻找第三方库
find_package(assimp REQUIRED)

# 设置工程源文件
file(GLOB_RECURSE srcs CONFIGURE_DEPENDS src/*.cpp include/*.h)
#add_library(testassimp STATIC ${srcs})

# 设置可执行程序
add_executable(testassimp
            ${srcs}
        )

# 设置头文件搜索位置
target_include_directories(testassimp PUBLIC include)

# 引入第三方库assimp, 此处引入的方式是PUBLIC ,assimp的属性会传染到testassimp工程中
target_link_libraries(testassimp PUBLIC assimp::assimp)

main.cpp中尝试调用ASSIMP库,内容如下所示:

#include <assimp/Importer.hpp>

int main(int argc, char *argv[])
{
    // QApplication a(argc, argv);
    // Widget w;
    // qDebug() << "creat class";
    // w.show();

    Assimp::Importer importer;
    // return a.exec();
    return 1;
}

如果此前你的编辑器已经设置好,或者使用IDE的话,可以看到已经能够识别到assimp中的各种头文件和函数了。如下所示
在这里插入图片描述
此时编译运行main.cpp,没有错误,即表示其可以正常调用assimp库。

部分问题

  • build文件夹下的CMakeCache.txt是CMake的缓存,很多事情出现问题,删除CMake的缓存后,再尝试新的方法会更有效。
  • 当出现提示设备不支持动态库时,首先检查是否在CMakeList.txt中,find_package出现在了project的前面。
  • set(assimp_DIR D:/playground/third_lib_c/lib/cmake/assimp-5.2)不便于移植,可以将assimp_DIR的路径设置放到build时,即在cmake build时加入参数 -Dassimp_DIR=D:/playground/third_lib_c/lib/cmake/assimp-5.2
  • Cmake 提示未设定C或者CXX的编译器时,可以尝试在build时加入参数-DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值