1.工程加入include及lib路径, 并且 lib中加入spdlog include路径: /root/spdlog/include lib路径:/root/spdlog/build 2.加入头文件logger.h #ifndefLOGGER_H_#defineLOGGER_H_#include"spdlog/spdlog.h"#include"spdlog/sinks/rotating_file_sink.h"#include"spdlog/sinks/daily_file_sink.h"#include"spdlog/sinks...
有的第三方库对 CMake 过于友好,可以直接复制整个源码到当前项目,然后使用add_subdirectory()将其作为子项目参与生成和编译,然后在其它子项目中使用,无论本地项目有没有依赖这个子项目,它都会被生成和编译。 例如spdlog 支持如下两种风格的使用: 作为外部项目,安装后导入 find_package(spdlog REQUIRED) target_link_l...
点击Generate按钮之后,可以看到D:\env\spdlog-1.x\build编译生成目录下面多出了一个spdlog的VC++工程,如下图所示: spdlog工程 最后在Cmake-Gui界面中,点击Open Project按钮,选择VS2022打开spdlog项目,如下图所示: Open Project 或者直接到D:\env\spdlog-1.x\build目录下,找到spdlog.sln工程文件,直接使用VS2022打...
首先安装 vcpkg, 这里就不多说了, 按照官方文档下载安装即可[1]. 安装完成之后将 vcpkg 安装目录设置为环境变量VCPKG_ROOT. 假设要在项目中使用 spdlog 这个开源的日志工具. 创建一个 cmake 项目, 项目中包含如下几个文件: CMakeLists.txt cmake_minimum_required(VERSION3.20)set(CMAKE_TOOLCHAIN_FILE"$ENV{VC...
最后在Cmake-Gui界面中,点击Open Project按钮,选择VS2022打开spdlog项目,如下图所示: 或者直接到D:\env\spdlog-1.x\build目录下,找到spdlog.sln工程文件,直接使用VS2022打开也可以,效果是等价的。 默认是Debug模式,x64位,我们选择ALL_BUILD项目,右键菜单中选择生成, ...
使用FetchContent (CMake 3.11+) 细心的朋友已经发现了,上述使用ExternalProject_Add的方式引入spdlog是在编译时进行的,也就是说在Configure过程中我们并没有从git上下载项目,这就导致我们无法像submodule那样直接通过add_subdirectory引入项目,而是要预先定义好编译后库文件和头文件的位置,通过target_link_libraries和target...
spdlog通过GNUInstallDirs指明库使用GNU标准安装目录,即生成多个跟安装库有关的路径的变量,形如CMAKE_INSTALL_,CMAKE_INSTALL_FULL_,而在后续通过install指令将库安装到对应路径即可。 设置默认build类型 CMAKE_BUILD_TYPE默认值设为"Release"。还有另一个常用值"Debug"。 # ---# Set...
使用Imported Target 的另一个好处是,我们在引入一个依赖时只需要 link 其 Imported Target,不再需要手动加入其头文件目录了。因为依赖的头文件目录已经在其 target 的INTERFACE属性里了,而INTERFACE属性是可传递的,于是: find_package(spdlog REQUIRED) add_executable(MyEXE...
Config File 是依赖的开发者提供的 cmake 脚本,通常会随预编译好的二进制一起发布,供下游的使用者使用。在 Config file 里,会对库里包含的 target 进行描述,说明版本信息以及头文件路径、链接库路径、编译选项等 usage requirement。 CMake 对 Config file 的命名是有规定的,对于find_package(ABC)这样一条命令,...
CMake 是一个跨平台的构建系统,可以从 CMakeLists.txt 生成不同类型的构建系统(比如 Linux 的 make,Windows 的 MSBuild),从而让构建规则可以只写一份,跨平台使用。 过去的软件(例如 TBB)要跨平台,只好 Makefile 的构建规则写一份,MSBuild 也写一份。 现在只需要写一次 CMakeLists.txt,他会视不同的操作系...