cpp_redis是个C++11的开源的redis client库,支持cmake构建,但并没有提供CONFIG模式的import target导入脚本,如果希望在cmake下以find_package...方式导入cpp_redis的库,就需要自己写一个MODULE模式脚本,以下为FindCppRedis.cmake脚本实现 FindCppRedis.cmake # FindCppRedis # ----...defined, 则忽略此参数 FindCppRedis.cmake 执行后输出的变量 CPPREDIS_FOUND, 找到 cpp_redis 库为true,否则为false CPPREDIS_INCLUDE_DIR..., cpp_redis 头文件所在目录 CPPREDIS_LIBRARY, cpp_redis 库文件位置 TACOPIE_LIBRARY, cpp_redis 的依库 tacopie的位置 MSVC...所在的文件夹添加到CMAKE_MODULE_PATH # 否则find_package(CppRedis)时找不到FindCppRedis.cmake list (APPEND CMAKE_MODULE_PATH
Windows下使用VS2019和CMake 3.18.3编译使用yaml-cpp库 1、应用背景 2、下载yaml-cpp源代码 3、使用VS2019和CMake3.18.3编译yaml-cpp...最近实际项目中换成了最新版的Visual Studio 2019,我使用的Windows系统是Win7和Windows10,所以需要重新编译基于VS2019下的yaml-cpp的Debug和Release...3、使用VS2019和CMake3.18.3编译yaml-cpp 首先确保已经在自己的系统下安装了VS2019和CMake 我的系统是Windows7、VS2019、CMake 3.18.3,可以根据需要选择...我在Windows7系统下使用VS2019和CMake 3.18.3编译yaml-cpp的命令为: cmake .....这个yaml-cppd.lib就是我们使用VS2019项目编译出来的基于Win32平台的Debug静态库,在使用VS2019开发yaml-cpp的项目中需要引入这个lib库 3.2、使用VS2019编译
cpp_redis是一个基于C++11编写的支持跨平台的redis客户端。...使用起来很方便,cpp_redis支持CMAKE编译,编译也很简单,本文以脚本形式提供了使用CMAKE基于VS2015/Windows以及GCC/MinGW的编译过程。..._64文件夹下(包含Debug和Release版本)....如果你只想编译cpp_redis,可以如下直接克隆 https://gitee.com/l0km/cpp_redis.build.git 这个项目到本地(一定要加--recursive参数) git...clone --recursive https://gitee.com/l0km/cpp_redis.build.git 然后执行其中的msvc_build.bat或gnu_build.sh就可以编译出你想要的
项目日志——Log4cpp 开源的C++类库Log4cpp提供了很多功能,帮助我们的应用程序更方便地记录日志。.../configure --prefix=/home/xuanxuan/share_bike/third/lib/log4cpp make make install ---- 使用 包含头文件 #include...%R - seconds since Jan 1, 1970 %u - clock ticks since process start %x - the NDC 设置输出类别和日志优先级 log4cpp...<< " " << __LINE__ << ": " 使用: LOG(DEBUG)<<"DEBUG...::Category::getRoot(); return true; } 测试 main.cpp #include "iniconfig.h" //注意路径,会在CMake中进行调整 #include
YamlCpp #1 环境 macOS 10.15.5 Cmake #2 安装 git clone git@gitee.com:Coxhuang/yaml-cpp.git cd yaml-cpp mkdir...build cd build # 二选一 # 静态库 cmake .. # 动态库 cmake .....: /usr/local/lib/libyaml-cpp.a #3 使用 #3.1 Cmake配置文件 cmake_minimum_required(VERSION 3.17) project(yaml_demo...} # 将yaml-cpp库连接到yaml_demo可执行文件中 ) #3.2 使用 新建yaml文件 name: Cox sex: male age: 18 skills: C++: 1...Python: 1 使用 #include #include "yaml-cpp/yaml.h" int main() { YAML::Node config = YAML
[TOC] _Linux服务器重启后crs_stat -t命令无法正常使用以及解决思路 _ 前提:在Linux系统中安装ASM,安装完ASM和Oracle数据库时都是正常使用的,但在重启服务器后Oracle...启动界面提示要加载文件系统,查看文件系统是否有问题及磁盘挂载是否自启 $df -lh 3.查看uuid与设置/etc/fstab $sudo blkid $lsblk -f #命令查询块设备下详细的信息...sdc1分区没有自动挂载导致Oracle程序没有办法启动,修改/etc/fstab配置文件让sdc1设备在开机自动启动,最好通过UUID来挂载; #注意后面的数字修改成0 0,如果不设置0的话,服务器在启动的时候就会检测...,如果硬盘满的话,就会导致操作系统无法正常启动,此处应该让系统禁止检测 4.设置后重启服务器系统启动成功后用grid用户查看ASM状态 crs_stat -t WeiyiGeek.crs_stat无法启动
vscode Cmake简介 Cmake语法 重要指令和CMake常用变量 重要指令 CMake常用变量 CMake编译工程 CMake代码实践 CMake完整项目 调试步骤launch.json和tasks.json...CMake可以说已经成为大部分C++开源项目标配 传统的C++文件不通系统对应不通的编译 比如 当添加一个文件的时候需要对不通操作系统中的工程进行修改 有了Cmake以后,只需要编写一个...参数使用括弧括起 参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp...) ADD_EXECUTABLE(hello main.cpp ${HELLO}) 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名 重要指令和CMake常用变量 重要指令 cmake_minimum_required...:库文件输出的存放路径 CMake编译工程 CMake目录结构:项目主目录存在一个CMakeLists.txt文件 两种方式设置编译规则: 包含源文件的子文件夹包含CMakeLists.txt文件,主目录的
- 其他还有Doxygen和BullseyeCoverage 1.1 CMake的前世今生 项目的通常做法是为Unix平台提供配置脚本和Makefile,为Windows提供Visual Studio项目文件...Sun工作站使用该imake系统创建Makefile。但是,有时需要Windows端口时,gmake才创建了系统。Unix编译器和Windows编译器均可与此gmake基于此的系统一起使用。...这个阶段解决了用户构建一个项目需要依赖的各种输入参数。 在项目的构建过程中都使用shell级别的环境变量。通常,项目具有指向根目录位置的PROJECT_ROOT环境变量。还有配置可选或外部程序包。...image.png 2.3 依赖管理和更新构建 CMake在使用IDE的平台不生成依赖,这些依赖由IDE自己完成。...,也可以直接是 GIT_REPOSITORY,一般建议直接使用打包的 tag,因为比较快,而且有固定的 tag,比较好做版本管理,但是有些项目引用了外部项目需要执行 git submodule update
快速入门:使用 CMake 进行构建 关于GoogleTest和CMake结合使用,可以参照GoogleTest官方文档Quickstart: Building with CMake 特此记录一下...,如果在Windows下,需要安装Visual Studio开发工具以及CMake软件;如果是Linux或MacOS,则需要安装Gcc或CLang,还有CMake;其中C++编译器要最少支持C++14标准...相关资料 Quickstart: Building with CMake GoogleTest for CMake Setting up CMake for Google Test GoogleTest-Modern...CMake
union的大小为最大的那一个变量。 它与结构体struct的不同就是struct需要满足内存对齐,例如下面这段代码。...运行结果为00001000 00000000 00000000 00000000,从最低位(LSB)开始输出,因此使用的是小端存储。...可以通过下面的示例代码通过union快速获得短字符串的哈希值进行比较。...但是访问具体的数据就要通过line.p1.x这样的语句。...给var类型变量赋值时,会根据参数类型调用对应的构造函数,然后为union结构赋值。
CMake是一个跨平台的Makefile生成工具,可以根据特定的规则生成相应的Makefile文件,并对C/C++源代码进行编译和管理。...有两篇博客介绍CMake的使用,比较通俗易懂,链接地址是: Cmake 详解 CMake 入门实战 CMake的官方下载地址为:https://cmake.org/download/ 官方文档地址为:CMake...}") endif(CMAKE_COMPILER_IS_GNUCXX) 2、延伸 如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt) 使用的g++版本和...github上面有一个韩国人jacking75写的简单的cmake使用示例, examples_CMake项目地址是:https://github.com/jacking75/examples_CMake...STATIC test01.cpp)指令会生成相应的静态库文件libTest01.a test02目录下和test01目录结构一样,也有test02.h和test02.cpp以及相应的CMakeLists.txt
有一篇博客介绍CMake的使用,比较通俗易懂,链接地址是:Cmake 详解 CMake的官方下载地址为:https://cmake.org/download/ 官方文档地址为:CMake 3.16...}") endif(CMAKE_COMPILER_IS_GNUCXX) 2、延伸:如何写cmake使其包含c++11特性 (-std=c++11如何写进cmakeList.txt) 使用的g++版本和...cmake版本分别是g++ 4.8.2和cmake 2.8 之前写cmkae编译带有c++11特性的代码有这么一句: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -...github上面有一个韩国人jacking75写的简单的cmake使用示例, examples_CMake项目地址是:https://github.com/jacking75/examples_CMake...STATIC test01.cpp)指令会生成相应的静态库文件libTest01.a test02目录下和test01目录结构一样,也有test02.h和test02.cpp以及相应的CMakeLists.txt
QT的项目工程默认使用的是qmake,这本来也没什么问题。但是由于要用到vcpkg这个工具来管理第三方库,好像这个 vcpkg工具只能在cmake的项目中才能使用。...Qml的打包和QT传统的打包方式也是不同的。...如果你的源码使用了三方库或者生成了动态链接库,那么需要手动将需要的dll文件复制到目录下,实际运行试试,是不是可以正常运行。...预定义变量 PROJECT_NAME项目名称 PROJECT_SOURCE_DIR工程的根目录 PROJECT_BINARY_DIR 执行cmake命令的目录 PROJECT_BINARY_DIR 执行...()指定动态链接库install()指定make install的目录 set(XXXX YYYYYY)用于设置和修改变量 ${XXXX} 使用变量 cmake_minimum_required(VERSION
那么来谈谈为什么不使用scons,采用cmake编译。不是因为scons不好,而是之前作者在写关于cmake的文章中,熊大(RTT的创始人)看到,然后在交流中,熊大说可以采用cmake进行编译。...所以我也是冒着尝试的想法,开始了使用cmake去构建微内核。下面几篇文章是关于CMake理论的文章。...《CMake,大型项目采用的构建工具》 《CMake 静态库与动态库构建》 《CMake 教你如何链接共享库》 在构建过程中,由于不是很熟悉整个构建流程,在熊大亲自指导下,让我清晰很多。...") 5.定义项目的名字。...${CMAKE_ASM_FLAGS} -march=armv7-a -marm -msoft-float -x assembler-with-cpp -O0 -g -fPIC") set(CMAKE_CXX_FLAGS
,需要一个能够跨平台的项目编译解决方案,经过调研之后,选择了使用cmake这个工具,本文主要讲述,使用cmake的生产项目的一些基础知识。...Windows下有命令行版本和gui版本,主要看大家的使用习惯。 设置环境变量的方法,我的电脑->属性->高级系统设置->环境变量,然后将cmake的路径加到path环境变量中。...1、windows使用cmake_gui生成项目 image.png 如上图,在source code处选择CMakeLists.txt文件所在的路径,然后在binaries中选择项目生成的地址...然后执行cmake ../ 然后在build目录就会产生vs的项目文件,在windows下默认是产生vs的项目,如果要产生其他编译器的makefile,则需要使用-G指定编译器,如下: ...生成项目工程文件或者makefile之后,就可以使用对应的编译器来编译项目了。 3、linux使用cmake生成项目 在linux下使用cmake生成项目和和上面的第2小节类似。
} -fno-exceptions") set(CMAKE_ASM_FLAGS_RELEASE "${MCPU_FLAGS} ${VFP_FLAGS} ${COMMON_COMPILE_FLAGS...} -x assembler-with-cpp") # 定义最小尺寸且包含调试信息的编译参数; set(CMAKE_C_FLAGS_RELWITHDEBINFO "-Os -g ${CMAKE_C_FLAGS...") set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "${MCPU_FLAGS} ${VFP_FLAGS} ${COMMON_COMPILE_FLAGS} -x assembler-with-cpp..."-Os ${CMAKE_CXX_FLAGS} ${CFCOMMON} -fno-exceptions") set(CMAKE_ASM_FLAGS_MINSIZEREL "${MCPU_FLAGS...-x assembler-with-cpp")2. undefined reference to RAM_segment_used_end'RAM_segment_used_end 保存的是,当前已经使用的
这就有点意思了,那我们需要引用ffmpeg中的一些方法就不用额外的编译库了,直接使用libijkffmpeg.so中的文件就可以的。 1.节省了空间大小,防止重复编译ffmpeg导致的包体积增大。...2.native接口不用和ijkplayer的上层写在一起,可以单独写,完全不影响。...主要的操作步骤如下: 新建一个cpp文件夹,将include文件夹拷贝到cpp下面 新建CMakeLists.txt和jeffmony.cpp,jeffmony.cpp就是自定义的native方法 修改...具体的项目代码见:https://github.com/JeffMony/PlayerSDK 3.修改ffmpeg库链接顺序 使用libijkffmpeg.so运行的时候总是发现有一些库函数找不到, 例如...就是链接正确的库, 可以正常使用了 音视频开发中使用ffmpeg的地方非常多, 播放场景/音视频编辑场景, 其中都会使用到ffmpeg核心模块, 本文的介绍就是告诉大家, 我们可以将不同的功能模块封在同一个
在项目开发过程中,避免不了要使用一些开源的三方库,我参加过的一些团队有不同的管理三方库的方式。...这种形式很容易出现源码和三方库文件不匹配的情况,这个项目编译好的复制到其他项目直接用,管理混乱。...跨平台项目要上传不同平台的三方库二进制文件到工程中 使用 CMake + Git Submodule 形式管理 通过以上的描述,我们已经很容易能看清楚不同的管理方式的优劣了。...脚本利用 CMake 自动编译三方库工程,不同平台可以使用 CMake 自动编译,不需要单独维护个别版本。...libyuv 添加完成后,我们写一个自动编译三方库的脚本,Windows 平台下使用批处理、macOS 下使用 Shell 脚本。
关于JVM attach和Instrumentation的功能,下次再写文章介绍,本文着重于greys中非常神奇的一个类AdviceWeaver,该类使用asm代码实现了简单的aop功能,本文的实现方式基本参考该类...下文将结合asm的使用方法讲解如何实现简单的aop功能。 asm简介 什么是asm?ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。...下面演示下如何调用System.out.println(String str) 首先需要将Object ref压入堆栈(使用ASM取得Ojbect ref通常不是一件容易的事情),我们使用getstatic...这其实有几个比较有意思的点,第一个就是为啥要压入adviceId而不是压入adviceListener呢,主要是在AdviceAdapter的上下文中,使用ASM很难获取到adviceListener的实例变量...catchException(beginLabel, endLabel, THROWABLE_TYPE)这个语句相当于说,在beginLabel和endLabel之间使用try catch block,
领取专属 10元无门槛券
手把手带您无忧上云