简化的 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
将它们链接到您的库或可执行文件中。