项目目录:
根目录下共有两个文件夹,分别为include、src,有两个文件,分别为CMakeLists.txt和main.cpp
main函数
可以看出,include了func.h,且func.h的声明在include文件夹下,定义在src文件夹下的func.cpp中
src文件夹下的CMakeLists.txt
add_library
表示创建了一个静态库,名字是func,用的是func.cpp这个文件
target_include_directories
表示让../include
文件夹成为func库的头文件的默认搜索的文件夹,且PUBLIC
表示让这个目录添加到func目标的接口中,这样任何使用func目标的其他目标都可以访问这个目录,这对于构建复杂的项目时非常有用。
具体到这个例子来说,就是在根目录下的CMakeLists.txt在build的时候,能够访问这个目录
根目录下的CMakeLists.txt
add_subdirectory(src)
的作用是向 CMake 告知该项目的源代码位于名为 src 的子目录中。当执行 cmake 命令时,CMake 会检查项目根目录下的 CMakeLists.txt 文件,并执行其中的指令。如果其中包含了 add_subdirectory 指令,那么 CMake 会在指定的目录下寻找另一个 CMakeLists.txt 文件,并执行其中的指令。通过这种方式,我们可以将一个大型项目拆分成多个子目录,并为每个子目录单独编写 CMakeLists.txt 文件,从而更加灵活和方便地管理项目。
target_link_libraries(untitled33 func)
是 CMake 中用于将目标库链接到可执行文件的指令。
在本例中,untitled33 是一个可执行文件的名称,func 是一个目标库的名称。使用 target_link_libraries 指令,我们告知 CMake 将目标库 func 链接到可执行文件 untitled33 中。这样,当我们执行 untitled33 可执行文件时,操作系统会自动加载并运行 func 目标库中的函数或代码,从而实现所需的功能。