提供一个cmake3.15以上,在当前目录,子目录,内创建cmakelists.txt,最终编译myapp
时间: 2024-11-15 09:21:20 浏览: 4
CMake添加引用多个子目录多个CMakeLists同时编译
5星 · 资源好评率100%
要在CMake 3.15及以上版本中,在当前目录及其子目录下创建`CMakeLists.txt`文件并配置项目以构建`myapp`,你可以按照以下步骤操作:
首先,确保你已在当前目录(以及所有子目录)里创建了名为`CMakeLists.txt`的文件,并确保每个文件包含基本的CMake结构,比如:
```cmake
# CMakeLists.txt (current directory)
cmake_minimum_required(VERSION 3.15)
project(myapp)
add_executable(myapp src/main.cpp) # 或者添加你的源文件列表
```
对于子目录,如果`myapp`有依赖于子目录的模块,例如`src/subdir1`和`src/subdir2`,它们各自的`CMakeLists.txt`内容可能是这样的:
```cmake
# src/subdir1/CMakeLists.txt
add_library(subdir1_module source_files_in_subdir1.cxx)
# src/subdir2/CMakeLists.txt
add_library(subdir2_module source_files_in_subdir2.cxx)
target_link_libraries(myapp subdir1_module subdir2_module)
```
然后,在顶层目录的`CMakeLists.txt`中,你需要告诉CMake如何找到这些子目录的内容:
```cmake
# 添加对子目录的支持
file(GLOB_RECURSE subdirs ${CMAKE_CURRENT_SOURCE_DIR}/*/CMakeLists.txt)
foreach(dir ${subdirs})
include(${dir})
endforeach()
# 继续配置主项目的构建
add_subdirectory(src) # 这会递归地处理子目录的CMakeLists.txt
```
最后,在命令行中,从顶层目录运行CMake来生成构建系统,然后构建`myapp`:
```sh
cd /path/to/top_level_directory
mkdir build
cd build
cmake ..
make myapp
```
阅读全文