简化的 CMakeLists.txt 文件的例子,它展示了如何构建一个库和一个可执行文件,以及如何链接它们。这个例子假设您的项目结构如下:
project_root/  CMakeLists.txt  src/  lib/  Beidou.h  Beidou.cpp  test/  BeidouTest.cpp  CMakeLists.txt在 project_root/CMakeLists.txt 中,您可以这样写:
cmake_minimum_required(VERSION 3.12)  
project(beidou_project)  # 添加库文件的源文件  
add_library(beidou_lib  src/lib/Beidou.cpp  
)  # 设置库文件的头文件搜索路径  
target_include_directories(beidou_lib PUBLIC  ${CMAKE_CURRENT_SOURCE_DIR}/src/lib  
)  # 添加测试子目录  
add_subdirectory(src/test)在 project_root/src/test/CMakeLists.txt 中,您可以这样写
# 引入父目录的CMakeLists.txt中定义的变量和目标  
add_executable(beidou_test  BeidouTest.cpp  
)  # 链接库文件到可执行文件  
target_link_libraries(beidou_test PRIVATE beidou_lib)  # 添加测试  
add_test(NAME TestBeidou COMMAND beidou_test)在这个例子中,beidou_lib 是从 src/lib/Beidou.cpp 源文件构建的库,它的头文件位于同一目录下。beidou_test 是从 src/test/BeidouTest.cpp 源文件构建的可执行文件,它链接了 beidou_lib 库。
请注意以下几点:
- add_library命令用于创建库,- add_executable命令用于创建可执行文件。
- target_include_directories用来指定库的头文件搜索路径,使得其他目标(如- beidou_test)能够找到这些头文件。
- target_link_libraries用来将库链接到可执行文件。在这个例子中,- beidou_test可执行文件链接了- beidou_lib库。
- add_test命令用于添加测试,这里添加了一个名为- TestBeidou的测试,它运行- beidou_test可执行文件。
确保您的项目结构、文件名和库/可执行文件的名称与 CMakeLists.txt 文件中的相匹配。此外,如果您的项目中有其他依赖库,您还需要使用 find_package、find_library 或其他相关命令来找到它们,并通过 target_link_libraries 将它们链接到您的库或可执行文件中。