01 CMake的基本用法
CMake基本用法1.CmakeListsCmakeLists.txt是 cmake 的构建定义文件,如果工程存在多个目录,需要确保每个要管理的目录都存在一个CMakeLists.txt 2.CMake的语法 现代CMake和之前CMake的区别: 现代CMake是面向Tartget的,什么添加头文件、库的路径都是针对某个Target添加而不是对整个目录都添加进去。 cmake_minimum_required() 添加CMake编译的最低版本 project() 命名该CMake工程 add_executable(<name> [source1] [source2 ...]) 指定该工程编译将生成.exe的可执行文件 add_library(<name> [STATIC|SHARED|MODULE] [source1] [source2 ...]) 指定该工程编译生成静态/动态库 aux_source_directory(dir...
03 find_package用法
find_package()的用法作用主要就是通过库对应的.cmake文件(由库的维护者提供,一般用不着自己写),获得第三方库的头文件以及动/静态库文件的路径,方便我们直接添加到我们自己的工程里面 <PackageName>_FOUND :找到了就是True,没找到就是未设定 <PackageName>_INCLUDE_DIR :头文件目录 <PackageName>_LIBRARY...
05 CMake工程层次
CMake工程结构如果项目比较简单,比如只有一个CMakeLists.txt或者projet,那么就不用特别关心这个。但是如果一个大工程,有多个可执行文件,或者又有可执行文件,又有静态/动态库,则需要写多个CMakeLists.txt 多个CMakeLists如何写一般最外层的CMakeLists写: 1.设置编译后输出的位置 2.设置整个工程的C++版本 3.add_subdirectory() 什么时候写projet()一般只有最外层的CMakeLists写一下projet()。每写一个projet(),就会生成一个.sln文件。单独打开就如右图所示。左图是最外层的.sln文件 如果用VS的话,每个project就可以单独编译,但如果用的是VSCode的话,即使不写project每个subdirectory也可以单独编译,所以就没必要写了
04 install的用法
install的用法参考链接: 【CMake】cmake的install指令_cmake –install-CSDN博客 作用作用:就是把编译生成的可执行文件、静态库、动态库、头文件等拷贝到指定文件夹(${CMAKE_INSTALL_PREFIX})中 目的: 使用第三方库时,简化目录结构,install之后就可删掉源码了 自己的代码不想让别人看到源码,就把可执行文件、库、头文件install就行了 如何install1.首先得在CMakeLists中指定install的目标路径(通过${CMKAE_INSTALL_PREFIX}变量) 对于该变量的设置有多种方式: 在CMakeLists.txt中,通过set()设置 命令行中,cmake -DCMKAE_INSTALL_PREFIX=设置 2.在CMakeLists.txt中指定install规则 举个例子: 123456install(TARGETS lib_sensor lib_common lib_base my_executable ARCHIVE...
06 vcpkg用法
vcpkg用法 众所周知CMAKE只有项目构建的功能,而没有包管理的功能,因此之前要用第三方库的话,基本每次都得去github上下载,然后再写CMakeLists.txt,这属实有点麻烦…因此有必要学一下包管理工具,使得在开发时,可以更简单的在项目中加入第三方的依赖 注意:vcpkg下载的都是源码然后自行编译,不是直接下载.lib,.dll文件的!!!所以他能管理的都是那些git上的开源代码库,比如:opencv、qt、ffmpeg…而像TensorRT这样的库是不能用vcpkg来安装的,还是得自行下载安装 1.使用基本流程使用vcpkg的流程很固定,基本都一样: 1.下载并编译需要的库 1vcpkg install xxx # 会安装在vcpkg/installed目录下 2.在项目的CMakeLists.txt中加入vcpkg的TOOL Chain 1234cmake_minimum_required(VERSION 3.15)# 必须在创建工程前指定CMAKE_TOOLCHAIN_FILEset(CMAKE_TOOLCHAIN_FILE...
07 protobuf插件
protobuf插件 在使用protobuf这个序列化库的时候,我们通常需要手动调用protoc.exe这个可执行程序对我们定义的.proto文件进行编译,从而生成对应的.cc和.h文件,但是这有点麻烦,所以CMake提供了一个API便于我们编译.proto文件 1.编译原生proto文件123456789101112find_package(Protobuf REQUIRED)include_directories(${Protobuf_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR})set(PROTO_FILE helloworld.proto) protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILE} LANGUAGE cpp)add_executable(greeter_server greeter_server.cpp...
02 QMake的基本用法
QMake的基本用法QMake是和CMake类似的项目组织工具,不过比CMAKE简单不少 官方文档:https://doc.qt.io/qt-5/qmake-manual.html 本地的Qt安装目录也有,和官方文档一致 1.QMake添加源/头/UI等文件12345678910111213SOURCES += \ $$files(UserAPP/Src/*.cpp) \ $$files(UserAPP/Src/*.c) \# main.cpp \# mainwindow.cppHEADERS += \ $$files(UserAPP/Inc/*.h)# mainwindow.hINCLUDEPATH += UserAPP/Inc/FORMS += \# ...







