自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 cmake set_source_files_properties指令详解

在这个例子中,file1.cpp 会使用 -Wextra 和 -Werror 编译选项进行编译,而其他源文件 main.cpp 和 file2.cpp 则不受影响。这里,file2.cpp 将在编译时定义 SPECIAL_FEATURE 宏,而 main.cpp 和 file1.cpp 不会受到影响。通过 set_source_files_properties 指令,你可以精确控制源文件的编译过程,从而优化构建过程并处理特殊的编译需求。

2024-08-20 00:08:07 328

原创 cmake target_sources指令详解

在这个例子中,lib3.cpp 和 lib4.cpp 被添加到 my_library 目标中,而 lib1.cpp 和 lib2.cpp 是在 add_library 中最初定义的。) 生成的一组源文件,它们被添加到 my_library 目标中。接口库通常不直接编译源文件,但你可以使用 target_sources 为它定义源文件,以便使用该库的其他目标能够访问这些源文件。通过 target_sources,你可以更灵活地管理目标的源文件,并在 CMake 配置过程中更好地控制构建逻辑。

2024-08-20 00:00:27 178

原创 cmake find_library指令详解

这个例子会查找名为 mylibrary 的库,并将找到的库路径存储在 MY_LIBRARY_PATH 变量中。find_library 指令用于在指定的路径或系统中查找库文件,并设置一个变量来保存找到的库的路径。这个例子中,NO_DEFAULT_PATH 选项告诉 CMake 不要使用系统默认的路径进行查找,只在 /usr/local/lib 路径中查找 mylibrary。在这个例子中,CMake 会在 /usr/local/lib 和 /opt/lib 路径中查找 mylibrary 库。

2024-08-19 23:54:42 279

原创 cmake target_link_options指令详解

这里,my_library 是一个接口库,它本身不链接任何库,但 -lboost_system 选项会传递给所有链接到 my_library 的目标,即 my_executable。在这个例子中,-static 链接选项不仅应用于 my_library,还会传递到所有链接到 my_library 的目标中,例如 my_executable。在这个例子中,-Wl,–no-as-needed 选项将仅应用于 my_executable 目标,影响链接器的行为。

2024-08-19 23:48:36 274

原创 cmake target_compile_options指令详解

这里,my_library 是一个接口库,它本身不编译代码,但 -DINTERFACE_OPTION 选项会传递给所有链接到 my_library 的目标,即 my_executable。在这个例子中,-O3 优化选项不仅应用于 my_library 的编译,还会传递到链接到 my_library 的所有目标中,例如 my_executable。在这个例子中,-Wall 和 -Wextra 选项将仅应用于 my_executable 目标,编译器在编译 main.cpp 时会启用这些警告选项。

2024-08-19 23:44:34 301

原创 cmake target_compile_definitions指令详解

这里,my_library 只是一个接口库,它本身不编译代码,但 MY_INTERFACE_DEFINE 宏将会在所有链接到 my_library 的目标中定义,即在 my_executable 中定义。在这个例子中,MY_LIBRARY_DEFINE 宏不仅在 my_library 中可用,还会传递到 my_executable 中,因为定义是 PUBLIC 的。通过 target_compile_definitions,你可以精细控制每个目标的编译环境,确保在不同环境下正确编译和运行代码。

2024-08-19 23:39:04 193

原创 cmake_policy指令详解

通过使用 cmake_policy,开发者可以确保项目在不同版本的 CMake 中构建时,行为是一致的,从而避免因 CMake 版本升级而引入的潜在问题。CMake 政策用于控制 CMake 在不同版本之间的行为更改,确保项目在使用不同版本的 CMake 时行为一致。这会设置 CMake 的策略版本。通过设置策略版本,CMake 会自动为该版本之前引入的所有策略设置适当的行为。这些命令用于保存和恢复当前的策略设置,允许在 CMake 脚本的某一部分临时更改策略而不会影响到其他部分。

2024-08-19 23:35:52 211

原创 cmake add_dependencies指令详解

add_dependencies 指令用于在 CMake 构建系统中指定目标之间的依赖关系。通过定义依赖关系,CMake 可以确保在构建某个目标之前,所有依赖的目标都已构建完成。在这个例子中,my_executable 依赖于 my_library,这意味着在构建 my_executable 之前,CMake 将先构建 my_library。在这个例子中,my_custom_target 是一个自定义目标,不生成任何文件,但在构建 my_executable 之前需要先执行该目标的命令。

2024-08-19 23:31:03 302

原创 cmake configure_file指令详解

假设有一个项目需要生成一个配置文件 config.h,里面包含一些配置参数,例如版本号和路径等。我们可以创建一个 config.h.in 模板文件,使用 configure_file 指令生成 config.h 文件。在 CMake 中,configure_file 指令用于在构建过程中从一个输入文件生成一个输出文件,并且可以根据变量的设置动态地替换输入文件中的内容。这种方法使得在项目中动态生成配置文件变得非常方便,尤其是在需要将 CMake 的变量和项目配置参数传递给源代码时。

2024-07-18 10:35:47 232

原创 cmake write_basic_package_version_file指令详解

在 CMake 中,write_basic_package_version_file 命令用于生成一个基本的包版本文件,这个文件通常被用来描述软件包的版本信息,以便在 find_package 命令中进行版本匹配。通过使用 write_basic_package_version_file 命令,可以帮助开发者更方便地管理和使用 CMake 管理的软件包,特别是在需要与其他项目或团队共享和集成的情况下。

2024-07-18 10:32:02 165

原创 cmake configure_package_config_file指令详解

在 CMake 中,configure_package_config_file 命令用于生成包配置文件(Package Configuration File),这些文件用于指定如何使用和链接某个库或工具。在这个示例中,configure_package_config_file 命令会根据 MyLibConfig.cmake.in 文件生成实际的 MyLibConfig.cmake 文件,将路径变量 ${CMAKE_INSTALL_PREFIX} 替换为实际的安装路径,然后安装到指定的路径中。

2024-07-18 10:26:28 599

原创 cmake get_target_property指令详解

get_target_property 指令在 CMake 中用于获取目标属性的值。目标属性包括编译器选项、链接器选项、源文件列表、包含目录等。这些属性与具体的构建目标(如可执行文件、库)相关。这些示例展示了 get_target_property 的基本用法,以及如何在 CMake 构建系统中获取目标的属性值。这对于调试和了解目标的配置非常有用。执行 CMake 配置时,你将看到包含目录、编译器宏和源文件列表的信息被打印出来。以下是一些使用 get_target_property 的示例。

2024-07-18 10:19:46 265

原创 cmake get_directory_property指令详解

get_directory_property 指令在 CMake 中用于获取目录范围的属性值。这些属性可以是用户自定义的,也可以是 CMake 内置的属性。目录属性与目标属性、变量和其他作用域不同,通常用于控制在特定目录中的构建行为。这些示例展示了 get_directory_property 的基本用法,以及如何在 CMake 构建系统中获取目录范围的属性值。执行 CMake 配置时,你将看到父目录中设置的包含目录和编译器宏在 src 子目录中被获取并显示出来。

2024-07-18 10:11:58 217

原创 cmake enable_language指令详解

在这个示例中,项目 MyProject 默认启用了 C 和 C++ 支持,而 enable_language(Fortran) 明确启用了 Fortran 支持,然后使用 add_executable 添加包含 C、C++ 和 Fortran 源文件的可执行文件。enable_language 指令在 CMake 中用于启用一个或多个编程语言的支持。enable_language 指令在 CMake 中用于启用一个或多个编程语言的支持,自动配置相关的编译器和构建参数,确保项目能够正确处理这些语言的源文件。

2024-07-18 09:46:37 279

原创 Decoder-Only、Encoder-Only、Encoder-Decoder 区别

Decoder-Only、Encoder-Only 和 Encoder-Decoder 是三种常见的神经网络架构,主要用于自然语言处理(NLP)任务。它们在结构和应用上有显著的区别。应用: 通常用于序列到序列(seq2seq)任务,如机器翻译和文本摘要。应用: 通常用于生成任务,如语言模型和对话系统。应用: 通常用于理解任务,如文本分类和情感分析。代表模型: Transformer、T5。描述: 仅包含解码器部分,没有编码器。描述: 仅包含编码器部分,没有解码器。描述: 同时包含编码器和解码器部分。

2024-07-04 23:17:08 503

原创 pytorch nn.Embedding 用法和原理

nn.Embedding 是 PyTorch 中处理离散输入的一个非常强大且常用的工具。通过将离散索引映射到连续向量空间,并在训练过程中优化这些向量,nn.Embedding 能够捕捉到输入的丰富语义信息。这对于自然语言处理等任务来说是非常重要的。

2024-07-01 11:07:14 1611

原创 cmake add_custom_command详解

在 CMake 中,add_custom_command 命令用于向构建过程添加自定义的命令。这些自定义命令可以用来生成文件、复制文件、执行脚本或其他任何必要的构建步骤。通常情况下,add_custom_command 用于描述某个文件或目标的生成过程。

2024-06-27 01:18:51 658

原创 cmake add_library详解

在 CMake 中,add_library 命令用于向项目添加一个库文件,并定义其类型(静态库或共享库)。这个命令是管理库文件的主要方法之一,用于指定源文件、依赖项和其他相关设置。

2024-06-27 01:16:15 713

原创 cmake set_target_properties详解

在 CMake 中,set_target_properties 命令用于设置目标的属性,这些属性可以影响目标的编译、链接和运行时行为。这个命令非常有用,可以用来调整生成的可执行文件、静态库或共享库的各种属性。

2024-06-27 01:13:37 671

原创 cmake add_custom_target详解

在 CMake 中,add_custom_target 命令用于创建一个自定义的构建目标,这个目标可以执行用户指定的命令或操作,而不依赖于具体的源文件编译。这在需要执行一些额外的构建步骤或者生成特定文件时非常有用。

2024-06-27 01:09:55 521

原创 cmake link_directories详解

link_directories 命令是 CMake 中用于设置库文件搜索路径的一种方式,可以全局影响项目中所有链接操作。然而,为了更加灵活和可维护的项目配置,建议在可能的情况下使用 target_link_directories 命令,以便目标特定地指定库搜索路径。

2024-06-27 01:06:33 409

原创 cmake add_subdirectory 详解

在 CMake 中,add_subdirectory 命令用于向当前项目添加一个子目录,并且使得 CMake 在构建过程中进入该子目录继续处理其中的 CMakeLists.txt 文件。这个命令通常用于管理项目中的多个模块或子项目。

2024-06-27 01:03:34 701

原创 cmake set_property详解

set_property 命令是 CMake 中设置属性的重要工具,可以用于调整和优化项目的构建过程。通过合理使用这些属性,可以根据需要自定义目标、源文件或整个项目的配置和行为。

2024-06-27 00:59:55 523

原创 cmake get_filename_component 详解

在 CMake 中,get_filename_component 函数用于获取文件名或目录的各个部分,如文件名、扩展名、目录等。这对于处理文件路径并从中提取信息非常有用。

2024-06-27 00:55:59 622

原创 cmake message详解

在 CMake 中,message 命令用于在生成过程中输出消息到控制台。这对于调试 CMake 脚本或向用户显示信息都非常有用。

2024-06-27 00:52:48 342

原创 cmake add_definitions详解

add_definitions 函数是向 CMake 项目中添加预定义宏定义的一种方法。虽然它可以全局影响项目中的所有目标,但在使用现代 CMake 时,更推荐使用 target_compile_definitions 命令,以便更精确地控制宏定义的作用范围。

2024-06-27 00:50:22 935

原创 cmake define_property详解

define_property 命令使您能够扩展 CMake 的功能,定义和使用自定义属性。通过合理使用这些自定义属性,可以增强项目配置的灵活性和可维护性。

2024-06-27 00:46:47 343

原创 cmake execute_process详解

execute_process 指令是 CMake 中一个强大的工具,允许你在配置阶段运行外部命令或脚本,并处理其输出和返回码。通过合理使用该指令,你可以增强 CMake 脚本的灵活性和功能性。

2024-06-27 00:41:36 309

原创 python print和pprint详解

它的基本用法非常简单,可以输出字符串、数字、变量、列表、字典等各种数据类型。其输出形式通常是紧凑的,尤其是对于复杂的嵌套数据结构来说,输出可能不太容易阅读。pprint 是 Python 标准库 pprint(PrettyPrint)模块中的一个函数,主要用于美观地打印 Python 数据结构,特别是复杂的嵌套数据结构。print 和 pprint 是 Python 中两个常用的输出函数,它们分别用于将数据打印到控制台,但它们在处理数据的方式上有一些关键的区别。

2024-06-25 23:41:17 293

原创 python sys.getsizeof 详解

在这个示例中,sys.getsizeof 仅返回对象 obj 本身的大小,不包括其属性 name 和 data 所引用对象的大小。sys.getsizeof 是 Python 标准库中的一个函数,用于获取一个对象在内存中占用的字节数。这个函数直接返回对象的大小,而不考虑对象引用的其他对象的大小。为了准确计算一个对象及其引用对象的总内存占用,可以使用递归方法。对于准确计算对象的总内存占用,推荐使用递归方法,或使用第三方库如 pympler 进行更复杂的内存分析。

2024-06-21 18:29:42 464

原创 c++ extern 关键字详解

extern关键字在C++中用于声明变量或函数的外部链接。

2024-06-19 00:55:25 593

原创 c++ operator 关键字详解

在C++中,operator关键字用于定义和重载运算符,使得自定义类的对象可以使用标准运算符(如 +, -, *, /, ==,!= 等)进行操作。通过运算符重载,可以使自定义类的行为类似于内置类型,从而提高代码的可读性和可维护性。

2024-06-19 00:30:49 254

原创 c++ friend 关键字详解

在C++中,friend关键字用于声明类的友元(friend),使得其他类或函数可以访问该类的私有成员和保护成员。友元关系是单向的,不是继承的,也不是可传递的。在这个例子中,BoxPrinter类被声明为Box类的友元类,因此BoxPrinter类的所有成员函数都能够访问Box类的私有成员width。使用友元虽然可以方便地访问类的私有成员,但应该谨慎使用,以避免破坏类的封装性和增加类之间的耦合度。在这个例子中,printWidth函数被声明为Box类的友元函数,因此它能够访问Box类的私有成员width。

2024-06-19 00:17:10 335

原创 C++ explicit 关键字详解

explicit关键字是C++中的一个重要特性,用于防止隐式类型转换,从而提高代码的安全性和可读性。当定义单参数构造函数或多参数构造函数时,考虑使用explicit关键字来避免潜在的问题。在C++中,explicit关键字用于修饰构造函数,以防止在不经意间进行隐式类型转换。这意味着,如果你有一个接受单一参数的构造函数,编译器会自动使用它进行类型转换。在上面的示例中,使用了explicit关键字来防止std::string被隐式转换为StringWrapper对象。

2024-06-19 00:09:29 418

原创 标准库头文件<cstdint> 详解

标准库头文件 是 C++11 引入的一个头文件,定义了固定宽度的整数类型以及其他与整数相关的类型和宏。它主要提供了与 C 标准库中的 <stdint.h> 相同的功能,但以 C++ 的方式进行包装。

2024-06-17 23:32:09 393

原创 C++日志库 glog入门

你可以设置自定义的日志记录器,以便自定义日志输出行为。

2024-06-17 22:57:19 1264

原创 c++ namespace详解

C++标准库中的所有组件都在命名空间 std 中,例如 std::cout, std::vector, std::string 等。来简化代码,但在大型项目中最好避免这种做法,以减少命名冲突的风险。在C++中,命名空间(namespace)是一种用于组织代码的机制,能够避免命名冲突。通过命名空间,可以将相关的类、函数、变量等组织在一起,使代码更具结构性和可读性。你可以使用关键字 namespace 来定义一个命名空间。通过使用命名空间,可以有效地组织代码,避免命名冲突,使代码更具可读性和可维护性。

2024-06-17 15:11:50 173

原创 c++ template 详解

C++模板(Templates)是一种非常强大的特性,它允许函数和类以参数化的方式进行定义,从而能够在编译时根据实际参数生成具体的类型或函数。函数模板允许你编写独立于特定类型的函数,模板参数会在调用函数时由编译器推导。通过使用模板,可以编写更加通用和高效的代码,但也需要注意其潜在的问题和局限。类模板允许你编写独立于特定类型的类,模板参数会在实例化类时由编译器推导。模板还可以接受非类型参数,例如整数常量、指针、引用等。模板特化允许你为特定类型或特定条件提供自定义实现。完全特化是为特定类型提供自定义实现。

2024-06-17 10:59:39 513

原创 c++ 头文件详解

头文件通常用于声明函数、类、宏和其他实体,以便在多个源文件中共享这些声明。例如,在头文件中声明类和函数,在源文件中实现它们。头文件通常包含函数和类的声明。这些声明告诉编译器这些函数和类存在于某个地方(通常在对应的源文件中),从而允许不同的源文件调用这些函数或使用这些类。只需包含头文件,就可以在不同的源文件中使用相同的函数和类声明。正如前面提到的,头文件通常使用包含保护来防止重复包含,确保每个头文件只被处理一次。通过正确使用头文件,可以有效地管理代码、提高代码的可维护性和重用性,特别是在大型项目中。

2024-06-17 01:44:32 421

原创 cmake target_include_directories 详解

在 CMake 中,target_include_directories 命令用于向特定目标(如可执行文件或库)添加包含目录,以便编译器能够找到特定目标所需的头文件。通过正确配置包含目录,可以确保编译器能够正确找到和包含项目中需要的头文件,这对于构建和管理大型项目尤为重要。

2024-06-16 16:05:24 467

IMMOC Java从零到企业级电商项目实战【完整版】

第一章课程介绍;第二章开发环境的安装预配置讲解;第三章数据表结构设计;第四章项目初始化;第五章用户模块开发;第六章分类管理模块开发;第七章商品管理模块开发;第八章购物车模块;第九章收货地址管理模块开发;第十章支付模块开发;第十一章订单管理模块开发;第12章 项目线上部署与自动化发布。

2018-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除