构造shared_ptr时推荐使用make_shared而非直接使用new,主要原因是性能优化、内存连续性、异常安全。使用make_shared可以减少一次内存分配,make_shared会在一个连续的内存块中同时分配控制块和对象本身,而使用new则需要两次内存分配,一次是对象本身,另一次是为shared_ptr的控制块。这样,make_shared不仅减少了内存分配次数...
这个目录是可选的,如果指定,cmake命令执行后的输出文件将会存放在此处,若没有指定,默认情况等于source_dir没有进行相对路径计算前的路径,也就是CMAKE_BINARY_DIR。 EXCLUDE_FROM_ALL标记 这个标志是可选的,如果传递了该参数表示新增加的子目录将会排除在ALL目录之外(可能是make系统中的make all?),表示这个目录将从...
CMake 构建脚本是一个纯文本文件,您必须将其命名为 CMakeLists.txt,并在其中包含 CMake 构建您的 C/C++ 库时需要使用的命令。如果您的原生源代码文件还没有 CMake 构建脚本,您需要自行创建一个,并在其中包含适当的 CMake 命令。 (2).在包含CMakeLists.txt的目录下使用cmake 1)构建放在当前目录下(内部构建...
CMake支持创建静态库和动态库。默认情况下,add_library()命令会创建一个静态库。如果你想要创建一个动态库,你需要在命令中添加SHARED参数,例如:add_library(MyLib SHARED main.cpp)。 如果你想要同时创建静态库和动态库,你可以将它们都列出来,例如:add_library(MyLibStatic STATIC main.cpp)和add_library(MyLibS...
初始化方式二,采用make_shared函数(C++11标准)、make_unique函数(C++14标准)。 代码语言:javascript 复制 std::shared_ptr<int>p3=std::make_shared<int>(15);std::unique_ptr<int>p4=std::make_unique<int>(10); 智能指针在初始化时,还可以用于指向动态分配的数组。
C++ 11 中的智能指针有:shared_ptr, unique_ptr 和 weak_ptr。 shared_ptr 的引用计数是存放在堆上的,多个 shared_ptr 的对象的引用计数都指向同一个堆地址。 unique_ptr 中拷贝构造函数和赋值操作符都声明为delete或private。 优先使用 make_shared 和 make_unique 的原因是为了避免内存泄露。参考C++11 中的...
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法CMake的所有的语句都写在一个叫:CMakeLists.txt的文件中。当CMakeLists.txt文件确定后,可以用ccmake命令对...
CMake是一个主要用于CPP的构建工具。CMake语言是平台无关的中间编译工具。同一个CMake编译规则在不同系统平台构建出不同的可执行构建文件。在Linux产生MakeFile,在Windows平台产生Visual Studio工程等。CMake旨在解决各平台的不同Make工具的产生的差异(比如GNU Make, ...
跨平台支持:支持 Windows、Linux、macOS 等平台,适用于不同编译器。灵活的配置:通过 CMake 可以轻松配置项目的依赖关系、库路径等参数。集成测试与打包功能:内置支持 CTest 和 CPack,能够自动化测试和打包。应用案例在跨平台项目中,使用 CMake 可以确保在不同平台上的一致构建。例如,在开发一个需要同时支持 ...
CMAKE_SIZEOF_VOID_P 变量,依赖主机的架构: 64-bit:64_32 32-bit:32 PATH_SUFFIXES 在每个目录位置下面指定额外的子目录进行检查,否则视为无效。 DOC 指定 缓存条目的文档字符串。 NO_CACHE 3.21版中的新内容。 搜索的结果将被存储在一个普通的变量中,而不是缓存条目。