add_executable(test main.cpp) 在父目录下调用cmake .构建之后,在output目录或sub目录下不会出现libsub.a库,说明当指定EXCLUDE_FROM_ALL选项,子目录的目标文件不会生成。 场景4:父目录CMakeLists.txt的add_subdirectory指定了EXCLUDE_FROM_ALL选项,且父目录的目标文件依赖子目录的目标文件。 # 父目录下的CMakeLi...
3.1 add_subdirectory的作用 add_subdirectory(添加子目录)是CMake中的一个命令,它允许我们将项目分解成更小、更易于管理的部分。从心理学的角度看,人类的大脑更善于处理结构化和分段的信息。这就是为什么我们更容易记住有结构的列表,而不是随机的事实。 在CMake中,当你使用add_subdirectory(src)命令时,你实际上是...
使用add_subdirectory的优势是可以模块化地管理项目的各个部分,使项目结构更加清晰和可维护。通过将项目分割为多个子目录,可以独立地对每个子目录进行构建、测试和部署,提高了项目的灵活性和可扩展性。 add_subdirectory的应用场景包括但不限于以下情况: 当项目由多个模块组成,每个模块都具有自己的构建配置时,可以将每个...
调用add_subdirectory()的效果之一是,CMake为处理该目录的CMakeLists.txt文件创建了一个新的作用域。这个新的作用域就像调用作用域的子作用域,有很多效果: 调用作用域中定义的所有变量对子作用域都是可见的,子作用域可以像读取其他变量一样读取它们的值。 在子作用域中创建的任何新变量对调用作用域都不可见。 对子...
CMake是一个强大的工具,用于在不同平台上构建项目。在Android Studio中,使用CMake可以帮助管理大型项目的不同模块,尤其是当项目变得复杂时。本文将探讨如何使用CMake的add_subdirectory命令,并通过示例代码来演示其实际应用。 什么是add_subdirectory? add_subdirectory命令允许我们将一个子目录添加到构建中,并在该子目录...
CMake中的add_subdirectory命令用于将子目录添加到构建,其格式如下: add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL] [SYSTEM]) 1. source_dir指定源CMakeLists.txt和代码文件所在的目录。如果它是相对路径,则将相对于当前目录(典型用法)对其进行评估,但它也可能是绝对路径。binary_dir指定放置输出...
在CMake中,通过使用add_subdirectory()命令可以添加子目录。这使得我们可以将项目划分为多个模块,并在每个子目录中管理自己的源文件和构建规则。 在主项目的CMakeLists.txt中,通过add_subdirectory()命令引入子目录: add_subdirectory(submodule1)add_subdirectory(submodule2) ...
CMake:add_subdirectory(...)隐含的用法 在CMake中有add_executable(main main.c),给可执行程序链库时,要使用target_link_libraries(...)给main链库,但该command不能使用相对路径,若最顶层的project与subproject在同一个文件夹中,需要使用link_directories(...)来显式指明要链接的库所在的路径,可以使用相对路径...
add_subdirectory命令,可以将指定的文件夹加到build任务列表中。 如果你的目录结构如下: image.png main是主工程的CMake目录,需要添加子目录模块sub1,那么语法如下: 默认情况下是添加当前目录的子目录,用法如下: #只需要传入相对主目录的相对路径`sub1`add_subdirectory(sub1) ...
add_subdirectory:这个CMake指令用于添加子目录。在生成的Makefile中,这个指令会导致生成一个新的Makefile文件在对应的子目录中。 通过理解CMake与Makefile的对应关系,我们可以更好地理解CMake的工作原理,以及如何编写有效的CMakeLists.txt文件。在下一章节中,我们将进一步探讨CMake构建过程的底层原理。