关于CMake ----- 一个简单的例子
样例的目录结构为:
对于这个程序,我们有一个带有头文件与源文件的库文件( MyLibExample ),以及一个带有源文件的应用程序( MyExample ),以下是cmakelists
cmake_minimum_required(VERSION 3.1...3.21)
#这是您的项目报表。你应该总是列出语言;
#在这里列出版本很好,因为它设置了很多有用的变量
project(
ModernCMakeExample
VERSION 1.0
LANGUAGES CXX)
#如果您设置了任何CMAKE_Variables,它可以放在这里。
#(但通常不这样做,可能除了C++标准)。
#查找包裹请点击此处。
#您通常应该将其拆分到文件夹中,但这是一个简单的示例
#这是一个默认的库,将匹配*变量设置。
#其他常见选项包括静态、共享和模块。
#在此处包含头文件有助于IDE,但不是必需的。
#输出 libname与目标名称匹配,并具有您系统上的常见扩展名
add_library(MyLibExample simple_lib.cpp simple_lib.hpp)
#将每个目标与其他目标链接或添加选项等。
#添加我们可以运行的内容-输出名称与目标名称匹配
add_executable(MyExample simple_example.cpp)
#确保使用此命令链接您的目标。它还可以链接库甚至标志,因此链接不存在的目标不会产生配置时错误。
target_link_libraries(MyExample PRIVATE MyLibExample)
## [main]
#此部分是为了让《现代CMake》一书能够验证此示例构建。对于您的代码,
#你可能也想要测试#
enable_testing()
add_test(NAME MyExample COMMAND MyExample)
1.add_library
示例:add_library(MyLibExample simple_lib.cpp simple_lib.hpp)
MyLibExample:静态库的名字
simple_lib.cpp simple_lib.hpp:依赖的cpp和h文件
2.add_executable
示例:add_executable(MyExample simple_example.cpp)
MyExample :编译出来的目标名
作用:
基于特定的源文件,创建可执行文件,名为或者.exe。
输出路径:
关于编译的产物,默认情况下,输出路径和源文件的结构相匹配
示例解释:
编译simple_example.cpp,编出来的可执行文件叫MyExample.
3.target_link_libraries
示例:target_link_libraries(MyExample PRIVATE MyLibExample)
target_link_libraries(
<PRIVATE|PUBLIC|INTERFACE> …
[<PRIVATE|PUBLIC|INTERFACE> …]…)
作用:
为target连接库的头文件路径(被link库生成CMakeLists.txt中定义的头文件路径)和对应定义的函数库路径
示例解释:
将函数库MyLibExample链接到MyExample上;