当前位置: 首页 > news >正文

如何创建网站赚钱网站建设服务商

如何创建网站赚钱,网站建设服务商,python做公司网站,九一人才网找工作CMakeLists.txt结构 总结该文件的主要结构 cmake_minimum_required(VERSION <version>) 指定CMake的最低版本&#xff0c;一般都是根据项目需要设定 cmake_minimum_required(VERSION 3.10) project(<name>) 定义项目的名称&#xff0c;放在CMake的开头 project(…

CMakeLists.txt结构

总结该文件的主要结构

cmake_minimum_required(VERSION <version>)

  • 指定CMake的最低版本,一般都是根据项目需要设定
cmake_minimum_required(VERSION 3.10)

project(<name>)

  • 定义项目的名称,放在CMake的开头
project(MyProject)

add_executable(<target> <source_files>)

  • 定义一个可执行的文件目标,并指定其源文件(可以是.cpp  .c   .h等文件)
  • target:目标的名称,也就是最终生成的可执行文件的名称,这个名称将在构建目录中生成对应的可执行文件
  • <source_files>:一组源文件,这些文件将被编译成目标可执行文件
    • 也可以使用通配符,自动找到其源文件
    • 下面事例就表明找到当前目录下的所有.cpp文件作为源文件包含进来
file(GLOB SOURCES "*.cpp")
add_executable(MyExecutable ${SOURCES})

target_link_libraries(<target> <libraries>)

  • 将库链接到指定的目标文件上,从而确保编译生成的可执行文件或者库可以与外部库进行链接
  • <target>:该目标名称可以是可执行文件,也可以是动静态库
  • <libraries>):外部库、静态和动态库、CMake内部目标
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 定义 MyLibrary 库
add_library(MyLibrary STATIC MyLibrary.cpp)# 定义可执行文件
add_executable(MyExecutable main.cpp)# 将 MyLibrary 链接到 MyExecutable
target_link_libraries(MyExecutable MyLibrary)

CMake 常见命令

aux_source_directory

aux_source_directory(<dir> <variable>)

  • 扫描dir目录下所有的源文件,并将这些文件存储在variable变量中
  • <dir>:需要扫描的目录路径,这里可以是相对路径和绝对路径
  • <variable>:使用一个CMake变量,扫描所有源文件的路径就爱那个被存储在该变量中
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 使用 aux_source_directory 扫描 src 目录下的所有源文件
aux_source_directory(src SRC_FILES)# 输出查看扫描到的源文件
message(STATUS "Source files: ${SRC_FILES}")# 创建可执行文件并将扫描到的源文件传递给它
add_executable(MyExecutable ${SRC_FILES})
  • message(STATUS "Source files: ${SRC_FILES}"):配置阶段输出扫描到的源文件路径,从而验证文件是否被正常的添加
  • add_executable(MyExecutable ${SRC_FILES}):给所有源文件创建一个名为MyExecutable的可执行文件

include_directories

include_directories(<dir>)

  •  作用:指定头文件的搜索路径,使得其在编译的时候,编译器可以找到这些目录的头文件
  • ${CMAKE_SOURCE_DIR}:CMake内置变量,指向项目的根目录
  • ${CMAKE_SOURCE_DIR}/include:编译器根据此命令就可以找到include/MyLibrary.h头文件
/project├── CMakeLists.txt├── include└── MyLibrary.h├── src└── main.cpp
cmake_minimum_required(VERSION 3.10)
project(MyProject)# 将 include 目录添加到头文件搜索路径中
include_directories(${CMAKE_SOURCE_DIR}/include)# 创建可执行文件
add_executable(MyExecutable src/main.cpp)

set

set(<variable> <value>)

  • 作用:用于定义和设置变量的值,通过该命令可以存储类似于源文件路径、编译选项、配置选项等信息
  • <variable>:需要设置的变量名称,可以是任何有效的变量名
  • <value>:给变量赋的值,这个值可以是字符串、文件路径、列表数字等
set(SRC_FILES main.cpp foo.cpp bar.cpp)
set(CMAKE_CXX_STANDARD 11)
  • set(SRC_FILES main.cpp foo.cpp bar.cpp):将SRC_FILES变量设置为后面内容的列表,这样后续的命令就可以通过引用SRC_FILES
    • 下面的事例:将SRC_FILES中的所有文件都作为源文件给add_executable,生成可执行文件
  • set(CMAKE_CXX_STANDARD 11):表示用C++11标准去编译代码

set 一些常见用法总结

# 设置源文件列表
# 这里将所有源文件列出,并将其存储在 SOURCES 变量中
set(SOURCES main.cpp foo.cpp bar.cpp)# 创建一个可执行文件 MyExecutable,并将 SOURCES 变量中的文件作为源文件
add_executable(MyExecutable ${SOURCES})# 设置编译选项
# 这里设置了 C++ 编译器的选项,添加了警告标志 -Wall 和 -Wextra
set(CMAKE_CXX_FLAGS "-Wall -Wextra")# 设置库的路径
# 这里设置了 MY_LIBRARY_PATH 变量,指向一个包含库文件的路径
set(MY_LIBRARY_PATH /usr/local/lib)# 设置选项(布尔变量)
# 例如,设置 MY_OPTION 为 ON,通常用于配置项目的某些开关选项
set(MY_OPTION ON)# 高级用法:设置列表变量
# 使用 set 命令将多个源文件加入 SOURCE_FILES 变量中
set(SOURCE_FILESmain.cppfoo.cppbar.cpp
)# 创建一个可执行文件 MyExecutable,并将 SOURCE_FILES 中的源文件加入其中
add_executable(MyExecutable ${SOURCE_FILES})# 高级用法:添加目录到 CMake 搜索路径
# 例如,添加头文件路径到 CMake 的 include 路径
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/path/to/my/include")# 高级用法:修改已有变量
# 假设 SRC_FILES 之前已经定义,这里将其更新为新的文件列表
set(SRC_FILES main.cpp newfile.cpp)  # SRC_FILES 将被更新为新的文件列表# 高级用法:导出变量到 CMake 缓存
# 这会将变量 MY_VAR 添加到 CMake 缓存中,使得它可以在配置过程中修改并保持
set(MY_VAR "Some Value" CACHE STRING "Description of the variable")# 最终,使用这些设置来创建可执行文件或进行其他操作
add_executable(MyExecutable ${SRC_FILES})

add_custom_command

  • 作用:用于构建过程中执行自定义命令,可以是生成脚本、运行脚本或者其他操作
  • OUTPUT <output_files>:指定此命令生成的文件或文件列表。CMake 会跟踪这些文件,并在需要时重新运行命令(例如当文件依赖项发生变化时)
  • COMMAND <command> [<args>...]:定要执行的命令及其参数。你可以运行任何外部程序或脚本
  • DEPENDS <dependencies>:指定此命令的依赖项文件。如果这些文件发生变化,CMake 会重新运行命令
  • WORKING_DIRECTORY <directory>:指定命令执行时候的工作目录
  • COMMENT <comment>:一个描述性文本,用于在构建过程中打印,帮助用户了解正在执行的命令
add_custom_command(OUTPUT <output_files>COMMAND <command> [<args>...]DEPENDS <dependencies>WORKING_DIRECTORY <directory>COMMENT <comment>VERBATIM)

install

install(TARGETS <target> DESTINATION <directory>)
install(FILES <file1> <file2> ... DESTINATION <directory>)
install(DIRECTORY <dir> DESTINATION <directory>)
  • TARGETS <target>:指定要安装的目标,可以同时指定多个目标
    • DESTINATION <directory>:指定文件的安装位置,可以是相对路径也可以是绝对路径
  • FILES <file1> <file2> ...:指定要安装的单个或者多个文件
  • DIRECTORY <dir>:用于安装目录中的所有文件和子目录
  • PERMISSIONS <permissions>:可选,用于设定安装文件的权限
# 假设我们有一个可执行文件 MyExecutable 和一个头文件 myheader.h# 设置目标
add_executable(MyExecutable main.cpp foo.cpp)# 安装可执行文件到 bin 目录
install(TARGETS MyExecutable DESTINATION bin)# 安装头文件到 include 目录
install(FILES myheader.h DESTINATION include)# 安装库文件到 lib 目录(假设有一个库文件)
install(TARGETS MyLibrary DESTINATION lib)# 安装整个资源文件夹
install(DIRECTORY assets/ DESTINATION assets)# 打印安装成功的消息
message("Installation complete!")

处理库和依赖项

target_link_libraries()

  • 作用:将一个或者多个库文件链接到目标文件
  • <target>:要链接依赖库的目标,这里可以是可执行文件也可以是库文件
  • <library>:要链接的库文件,动静态库
target_link_libraries(<target> <library1> <library2> ...)

指定库的路径然后进行链接

# 指定库文件的路径
link_directories(/path/to/libs)# 链接静态库
target_link_libraries(MyExecutable /path/to/libs/libgflags.a /path/to/libs/libprotobuf.a)

查找库的位置然后进行链接

  • find_package(gflags REQUIRED):在系统中查找gflags库,并设置对应的变量,下同
# 查找并配置 gflags 和 protobuf 库
find_package(gflags REQUIRED)
find_package(Protobuf REQUIRED)# 定义目标并链接库
add_executable(MyExecutable main.cpp)
target_link_libraries(MyExecutable gflags::gflags protobuf::libprotobuf)

链接系统库

# 链接 pthread 库
target_link_libraries(MyExecutable pthread)

安装在非标准路径下的库,告知库如何链接的方法

针对于该问题也可以采用暴力的方法,直接复制系统库到系统路径下

  • link_directories():为链接器设置文件搜索路径
  • CMAKE_PREFIX_PATH:指定CMake查找包和库的路径
# 设置 CMake 查找库的路径
set(CMAKE_PREFIX_PATH "/path/to/libs")# 设置库目录
link_directories("/path/to/libs")# 链接库
target_link_libraries(MyExecutable mylib)

Protobuf 与 CMake集成

两者集合的主要目标就是构建过程中自动生成 .pb.cc 和 .pb.h文件,然后将器放进入到目标文件中

  • set(PROTO_FILE ...):指定.proto文件的路径
  • set(GENERATED_PROTO_SRC ...)和set(GENERATED_PROTO_HEADER ...):制定生成C++源文件和头文件的位置
  • file(MAKE_DIRECTORY ...):确保目录文件存在,这样就可以避免生成失败
  • add_custom_command()
    • OUTPUT:指定生成的文件
    • COMMAND:运行protoc编译器来生成目标文件
    • DEPENDS:指定输入文件,当.proto文件修改的时候,CMake会自动生成
    • VERBATIM:确定命令按原样传递,从而避免参数解析问题
  • add_executable():将生成管道.pb.cc文件添加到可执行文件的源目录的文件列表中
  • target_link_libraries():链接库
# 设置 Protobuf 文件的路径
set(PROTO_FILE ${CMAKE_SOURCE_DIR}/myproto.proto)# 生成 Protobuf 文件的路径
set(GENERATED_PROTO_SRC ${CMAKE_BINARY_DIR}/generated/myproto.pb.cc)
set(GENERATED_PROTO_HEADER ${CMAKE_BINARY_DIR}/generated/myproto.pb.h)# 创建生成 Protobuf 文件的目录
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/generated)# 使用 protoc 编译生成 .pb.cc 和 .pb.h 文件
add_custom_command(OUTPUT ${GENERATED_PROTO_SRC} ${GENERATED_PROTO_HEADER}COMMAND protoc --cpp_out=${CMAKE_BINARY_DIR}/generated ${PROTO_FILE}DEPENDS ${PROTO_FILE}  # 依赖 .proto 文件COMMENT "Running protoc to generate .pb.cc and .pb.h files"VERBATIM
)# 将生成的 .pb.cc 文件加入到目标文件
add_executable(MyExecutable main.cpp ${GENERATED_PROTO_SRC})# 如果还需要链接到其他库(如 protobuf 库)
target_link_libraries(MyExecutable protobuf)# 包含生成文件的头文件路径
include_directories(${CMAKE_BINARY_DIR}/generated)

http://www.dinnco.com/news/28946.html

相关文章:

  • 怎么做网站搜索关键词外贸接单网站
  • tiktok跨境电商好做吗上海快速排名优化
  • 新闻网站seo关键词平台开发
  • 成都微网站开发查询网址域名
  • 免费试用网站源码seo项目完整流程
  • 网站内的搜索是怎么做的平台推广员是做什么的
  • 酒泉网站建设网站推广沈阳
  • 佛山企业网站建设特色网站源码建站
  • 陕西省住房城乡建设厅网站管理中心北京百度推广代理公司
  • 做网站如何赚流量钱百度账号管理中心
  • 贵阳做网站优化北京推广服务
  • 免费软件网站大全没经验可以做电商运营吗
  • 公司做网站都咨询哪些问题软文街官网
  • 用flash做网站超链接软件开发培训学校
  • 有了源码怎么做网站宁波网站快速优化
  • 西安做网站要多少钱河南网站排名优化
  • 北京网站开发外包steam交易链接怎么看
  • 青海网站如何建设网络广告人社区
  • wordpress blod国内搜索引擎优化的公司
  • 上海兼职做网站淘宝关键词搜索
  • 石家庄网络公司哪家靠谱seo专员工资一般多少
  • 免费网站代理长沙seo关键词排名
  • 惠州网站建设公司成都网站制作维护
  • 网站建设优化服务公司神马推广登录
  • 长沙网站网络推广页面
  • 巴南区网站建设无锡百度推广代理公司
  • wordpress出售功能插件网站seo推广计划
  • php多语言网站开发免费私人网站建设平台
  • macromedia怎么做网站杭州网站seo外包
  • 网站收费怎么做百度入口网站