在开发导出 PDF 时,选择了使用mPDF,mPDF 是一个 PHP 库,它从 UTF-8 编码的 HTML 生成 PDF 文件。...而它的使用也相对简单: 安装 使用composer加载 composer require mpdf/mpdf 使用 <?php require_once __DIR__ ....'); $mpdf->Output(); 但是在实际使用时会遇到中文和符号乱码(变成了小方块)的问题,最开始会想到是字体的问题,但是指定了字体后,并没有解决问题。...' => true, ]); 刷新页面,发现中文此时已经可以正常显示了 mpdf中文正常,符号依旧是方块 但是当中文的标点符号靠近英文的时候,中文符号就又会变回小方块。...true, 'useSubstitutions' => true, ]); mpdf导出正常 至此,解决了中文和标点符号乱码的问题。
最近进行编译项目,但是项目中有很多可执行文件;每次编译起来比较费时,下面一组代码可以指定特定的编译目标进行编译,而不用编译所有目标; #!...表示要编译的目标;由 --target rg 指定; if [[ "$1" == "-h" || "$1" == "--help" ]]; then echo "用法:传递一组编译目标用于指定特定目标...:build.sh [编译目标1] [编译目标2]" exit; fi cmake -H....-Bbuild -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/opt/demo if [ $# -eq 0 ]; then cmake...--build build -j 1 else cmake --build build -j 1 --target $* fi 保持更新,转载请注明出处;更多内容请关注 cnblogs.com/
Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。...使用实例 步骤一 编写 CMake 配置文件 CMakeLists.txt 。...步骤三 使用 make 命令进行编译。...环境变量 使用环境变量 $ENV{Name} 写入环境变量 set(ENV{Name} value) # 这里没有“$”符号 预定义变量 变量 含义 PROJECT_SOURCE_DIR 工程的根目录
参数使用括弧括起 参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp...) ADD_EXECUTABLE(hello main.cpp ${HELLO}) 变量使用${}方式取值,但是在 IF 控制语句中是直接使用变量名 重要指令和CMake常用变量 重要指令 cmake_minimum_required...sayhello.cpp hello.cpp) 语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) include_directories – 向工程添加多个特定的头文件搜索路径.../include) 语法:include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 …) link_directories – 向工程添加多个特定的库文件搜索路径...build):推荐使用 将编译输出文件与源文件放到不同目录中 ## 外部构建 # 1.
最近恰好需要用 C++ 实现一个供 C# .NET 调用的模块,用dllexport导出符号的时候出现了一点问题,明明已经看到了导出符号,但是 .NET 在调用的时候,就是找不到方法。...然后用 def 文件的方式导出符号就正常,突然对这两种方式的区别产生兴趣,之前一直没有研究过,就仔细了查阅一番。...以导出名为 TESTFUNC 方法为例: def 文件方式 ,正常在程序中定义方法,然后新建一个 .def 文件,内容类似 LIBRARY EXPORT TESTFUNC 在其他工程使用这个方法的时候需要头文件...区别 这里就不得不说导出符号在 DLL 中的形式。...那回到我最初的问题,我的 C# 工程之所以在调用使用 dllexport导出的方法失败,就是因为,我没有写对真正的方法名(带一堆符号的那个)。而使用 .def 文件的话,就没有这个问题了。
自定义变量 可在命令行下向CMake传递自定义变量 cmake -DMY_VAR=hello . 然后在CMakeLists.txt中使用,注意大小写。...file(GLOB_RECURSE CMAKE_FILES "src/cmake*") 按照官方文档的说法,不建议使用file的GLOB指令来收集工程的源文件,原文解释如下 We do not recommend...其实,当CMakeLists.txt使用aux_source_directory和file glob查找工程源文件时,如果添加或删除源文件,都需要重新运行CMake。...set命令 经常配合set命令使用的CMake变量,使用set(variable value)进行设置。...还有一点,B.a会告诉CMake优先使用静态链接库libB.a,C.so会告诉CMake优先使用动态链接库libC.so,也可直接使用库文件的相对路径或绝对路径。
其作用是: 当使用 CTest 模块时,DBUILD_TESTING 用来控制是否使能 testing。 --trace :用于详细输出 cmake 的每一行信息。...CMakeLists.txt 编写 3.1 设定编译器 在运行 CMake 前首先需要指定 CC、CXX 编译器,否则 CMake 将使用系统默认的 CC、CXX 编译器。.../include> $ ) BUILD_INTERFACE 表达式包装的构建需求只被在同一个构建系统下,或者使用 export() 指令导出的目标上使用...INSTALL_INTERFACE 表达式包装的构建需求只被用在使用 install(EXPORT) 指令安装和导出的目标上: 3.9 函数和宏 函数和宏的唯一区别在于作用域,函数有作用域但宏没有。...CMakeCache.txt 文件主要保存的是 cmake 过程中需要使用的环境变量,当 cmake 命令寻找变量时,它会首先去 CMakeCache.txt 文件中寻找。
为什么要用cmake?makefile的语法非常复杂,光文档就有200多页,使用起来不方便,只支持linux平台,而cmake语法只有几页,用法通俗易懂,上手简单,代码量少,跨平台。...这也是大多数人使用cmake的原因 cmake默认使用CMakeLists.txt文件作为编写脚本的文件,下面编写了一个简单的CMakeLists.txt #1.cmake verson,指定cmake...详细介绍: 1.内置变量 CMAKE_C_COMPILER:指定C编译器+ CMAKE_C_FLAGS:编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项 EXECUTABLE_OUTPUT_PATH...,CMAKE_BUILD_TYPE=Debug BUILD_SHARED_LIBS:SHARED 表示生成动态库, STATIC表示生成静态库。...2.方法 project (HELLO) #指定项目名称,生成的VC项目的名称; ---- 使用${HELLO_SOURCE_DIR}表示项目根目录 include_directories:指定头文件的搜索路径
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...g++) add_definitions("-Wall -std=c++14") ADD_EXECUTABLE(main main.cpp) 07 helloworld-使用外部库(此处为Boost
|-- tlib.a # ---------------------------------------------------- # # ------------------cmake...内容----------------------- # # 最低版本要求 cmake_minimum_required(VERSION 2.8) # 工程名 project(demo) # 将hardware...指令----------------------- # # 1、cmake当前下的文件到"CMake"文件夹下,使用"Unix Makefiles"生成Makefile # cmake ....-G "Unix Makefiles" -B "CMake" # 2、在"CMake"文件夹下,make生成的Makefile # make -C "CMake" # 3、运行"CMake"文件夹下的可执行文件.../CMake/main # 4、清除make生成的文件 # make clean -C "CMake" # -----------------------------------------------
一、把QQ群的聊天记录txt格式导出 消息管理器 -> 选择要导出的群 -> 右击、导出 这里要注意 : 导出之后的 文本是 unicode 编码的,需要转换
__cplusplus 和 extern "C" 的目的是为了防止 C++ 的名称修饰,确保导出的符号是 C 语言风格的符号,而不是经过 C++ 编译器修饰后的符号。...编译命令:g++ -shared -fPIC -o myclib.so mylib.cpp但是,查看编译导出的动态库,发现符号还是修饰过的,查看导出符号可以使用下面的命令:nm -D myclib.so...,就是定义多个方法时,有些方法符号是按照 C 语言规则导出的,有些则是 C++ 语言名称修饰后导出的。...后来,实践后发现,编译确实会根据方法参数的复杂度来决定是否使用 C++ 名称修饰,如果想强制使用 C 语言风格的导出符号,不仅需要在头文件中声明 #ifdef __cplusplus 和 extern..."C" 语句,还需要在 C++ 文件中直接使用 extern "C" 语句包裹方法实现。
CMake使用技巧集.txt 1、注意CMake不允许出现相同的目标名称,即使是不同的目录下的CMakeLists.txt 2、将头文件搜索路径插入到其它的前面: include_directories...(BEFORE /tmp) 当使用CMake的include复用规则时,如果想让某头文件路径至于其它的前面,则需要指定BEFORE,否则/tmp将位于其它的后面。...类似BEFORE的取值,还有:AFTER和SYSTEM,详情可参见CMake的官方说明:https://cmake.org/cmake/help/v3.0/command/include_directories.html...3、阻止为动态库添加前缀和后缀 add_library(hello.fcgi SHARED hello.cpp) # 阻止cmake自动添加lib前缀和so后缀 set_target_properties
https://blog.csdn.net/10km/article/details/82632848 正在设计的一个C/C++混合语言项目是用cmake来管理编译的,用cmake生成的一个...Visual Studio工程(c++)在编译时报了个错: LINK : error LNK2001: 无法解析的外部符号 WinMainCRTStartup 好是莫名其妙的问题,之前是没有这个问题的...,反复查看了GIT提交记录,发现问题出在cmake脚本中 原本项目的定义是这样的,语言指定C,CXX,这样是可以正常编译的。
缘起:之前给别人提供的SDK都是在Linux下使用Qt搭建的,但是最近有客户不使用Qt,而是需要在Linux下使用cmake进行进行文件组织。于是我就进行谷歌,现在将可用的程序记录下来。...文件结构 如未安装,使用sudo apt install tree命令安装。 使用tree -L 1 命令以树状图列出目录的内容(也可只使用tree命令)。...小结 刚安装的ubuntu 16.04没有cmake, 使用sudo apt install cmake命令可完成安装。...二、改善文件结构 通过以上几个步骤,我们掌握了基本cmake命令使用、makefile文件编写等技能。但是生成的中间文件与源文件与makefile混在一起,这在实际应用中肯定是不行的。...在build文件夹中进行编译 过程: 进入build文件夹 cmake .. make 注意是 cmake .. 中间文件在build文件下 ? 可执行文件所在目录 ?
在 linux平台下使用CMake生成 Makefile并编译的流程如下: (1)编写CmakeLists.txt。...2.CMake相关语法规则 CMake 可以通过 CMakeLists.txt文件来产生特定平台的标准的构建文件,编写的CMakeLists.txt需要符合一定的语法规则。...如果使用 CMake生成 Makefile时,我们需要做一些不同的工作。CMake中存在一个变量CMAKE_BUILD_TYPE用于指定构建类型,此变量只用于基于 make的生成器。...|RELWITHDEBINFO]则指定特定构建类型的编译标志,这些编译标志将被加入到 CMAKE_C_FLAGS或 CMAKE_CXX_FLAGS中去,例如,如果构建类型为 DEBUG,那么 CMAKE_CXX_FLAGS_DEBUG...(语法为 CMake ,这里使用 CMake .. 表明了 CMakeLists.txt在 Build目录的父目录中)。
---- 变量 在撰写 CMakeLists 时可以使用变量储存资料以及作为指令的参数。 CMake 中的变量具有以下特征: 1、变量严格区分大小写!...2、CMake 中的变量只有两种类型:字符串,和字符串数组。 3、变量无需声明即可赋值或者使用。未赋值的变量默认为一个空字符串。 4、与其他语言编程语言不同的是,CMake 脚本的语法中没有赋值操作。...如果字符串中不包含空格,那么可以不加引号,直接使用。 ---- 在 CMake 当中我们可以用 set() 指令来设定一个变量的值。...提取变量值时通常必须在外面加上 ${} 符号,不过也有少数场合例外。...]] [FATAL_ERROR]) 使用范例:cmake_minimum_required(VERSION 2.8) ---- 将 dir 目录下的所有源文件的名字保存在变量中 命令语法:aux_source_directory
- CPack是一种打包工具,用于为使用CMake构建的软件创建特定于平台的安装程序。 - CDash是一个Web应用程序,用于显示测试结果并执行连续的集成测试。...这两个系统都存在严重缺陷:它们迫使Windows开发人员使用命令行。有经验的Windows开发人员更喜欢使用集成开发环境(IDE)。...image.png image.png 2.2 生成阶段 在生成阶段,cmake使用了一套语法解析系统,关键的类图如下。cmMakefile对象存错了CMakeLists.txt的所有输入变量。...解析器使用了lex/yacc语法解析器,执行构建动作。cmCommand定义了命令的执行动作,并且该动作的注释在代码也有注释。这些关键类 是抽象类,CMake的跨平台实现依赖于这些类的平台实现类。...image.png 2.3 依赖管理和更新构建 CMake在使用IDE的平台不生成依赖,这些依赖由IDE自己完成。
不得不说,cmake的功能很强大,不仅可以生成make的配置文件,还可以生成VS、eclipse的工程文件。但是我在使用时总是碰到很多错误,首先就是cl找不到,用图形化工具时也是找不到。...如果正确地使用cmake?...首先,确保自己的系统中存在cmake可以识别的编译工具,但是,这个编译工具属于半自动识别,命令行下你需要使用 -G 参数来选择Generator,只有选对正确地Generator,才可以识别到你的工具链...首先使用MinGW下载MSYS的make工具,然后添加进系统路径,确保在命令行下make可以正常运行 下载cmake,这个可以网络搜索下载,注意添加进系统路径 在工程的根目录下新建 build文件夹,进入这个文件夹...执行 cmake -G (options for generator..) ../ 注意cmake的命令格式,最后的..
需求:设置用户test,test1对特定的目录有读写执行权限,后加的文件也是这个权限。...m表示设置文件acl规则 setfacl -R -m d:u:test:rwx /data2/test setfacl -R -m d:u:test1:rwx /data2/test –删除ACL规则使用...-L,–logical logical walk,follow symbolic links #跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。...-P,–physical physical walk,donotfollow symbolic links #跳过所有符号链接,包括符号链接文件。...当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。每行至少一条规则,以#开始的行将被视为注释.
领取专属 10元无门槛券
手把手带您无忧上云