cmake添加子目录
时间: 2024-04-24 13:19:38 浏览: 180
在CMake中,可以使用`add_subdirectory`命令来添加子目录。该命令用于将子目录添加到当前项目中,并在构建过程中包含子目录的源代码。
使用`add_subdirectory`命令的语法如下:
```
add_subdirectory(<子目录名称> [输出目录])
```
其中,`<子目录名称>`是要添加的子目录的路径或名称。如果子目录位于当前项目的根目录下,则可以直接指定子目录的名称。如果子目录位于当前项目的其他位置,则需要指定子目录的完整路径。
可选的`[输出目录]`参数用于指定子目录构建结果的输出路径。如果不指定该参数,则默认将构建结果输出到当前项目的构建目录。
当使用`add_subdirectory`命令添加子目录后,CMake会自动在构建过程中处理子目录中的CMakeLists.txt文件,并将子目录的源代码包含到当前项目中。
相关问题
cmake 添加子目录
在 CMake 中,可以通过 `add_subdirectory()` 命令添加子目录。该命令的语法如下:
```
add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
```
其中:
- `source_dir`:指定子目录的源码路径。可以是相对路径或绝对路径。
- `binary_dir`:可选参数,指定子目录的构建路径。可以是相对路径或绝对路径。如果不指定,则默认与源码路径相同。
- `EXCLUDE_FROM_ALL`:可选参数,如果指定了该参数,则在执行 `make` 或 `ninja` 命令时不会构建该子目录。
下面是一个示例,展示如何在 CMake 中添加子目录:
```
# CMakeLists.txt
# 添加子目录
add_subdirectory(math)
# 主程序
add_executable(main main.cpp)
# 链接库
target_link_libraries(main math)
```
在上面的示例中,通过 `add_subdirectory(math)` 命令添加了一个名为 `math` 的子目录,并在主程序中链接了该子目录中生成的库文件。
cmakelist 添加子目录
在CMake中,要添加子目录,需要在父目录的CMakeLists.txt文件中使用add_subdirectory()命令。这个命令的语法是add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])。source_dir是子目录的路径,binary_dir是可选的二进制输出路径,EXCLUDE_FROM_ALL是可选的参数,用于指示该子目录是否被排除在构建过程之外。
在父目录的CMakeLists.txt文件中,你可以使用add_subdirectory()命令来添加一个子目录,并且在构建过程中同时构建该子目录。同时,在子目录的CMakeLists.txt文件中,你可以定义该子目录的源文件、头文件等。例如,你的目录结构可以是这样的:
├── CMakeLists.txt # 父目录的CMakeLists.txt
├── main.cpp # 父目录的源文件,包含main函数
└── sub # 子目录
├── CMakeLists.txt # 子目录的CMakeLists.txt
├── test.h # 子目录的头文件
└── test.cpp # 子目录的源文件
在父目录的CMakeLists.txt文件中,你可以添加如下代码来添加子目录:
```
add_subdirectory(sub)
```
这样,当你构建父目录时,CMake会自动构建子目录,并将子目录中的源文件和头文件包含在构建过程中。这样,你就可以在父目录中使用子目录中定义的函数和变量了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [CMake入门二——子目录的嵌套](https://blog.csdn.net/weixin_44688770/article/details/128855559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [[cmake][转载]add_subdirectory详解](https://blog.csdn.net/FL1623863129/article/details/120968730)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文