场景1:父目录CMakeLists.txt的add_subdirectory只指定了source_dir。 # 父目录下的CMakeLists.txtcmake_minimum_required(VERSION3.10.2) project(test) add_subdirectory(sub) 在父目录下调用cmake .构建之后,在sub目录下会出现libsub.a库,说明当不指定binary_dir,输出目标文件就会放到source_dir目录下。 场景2:...
add_subdirectory(source) # source目录下必须要有CMakeLists.txt include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) add_executable(main ${CMAKE_CURRENT_SOURCE_DIR}/samples/sample_add.cpp) target_link_libraries(main add) # add库在build/source目录下,此add库由source目录下的CMakeLists.txt生成...
CMake:add_subdirectory(...)隐含的用法 在CMake中有add_executable(main main.c),给可执行程序链库时,要使用target_link_libraries(...)给main链库,但该command不能使用相对路径,若最顶层的project与subproject在同一个文件夹中,需要使用link_directories(...)来显式指明要链接的库所在的路径,可以使用相对路径...
当你在父项目的CMakeLists.txt文件中使用add_subdirectory命令来添加子项目时,CMake会按照它们被添加的顺序来构建这些子项目。 然而,需要注意的是,CMake并不会自动解决子项目之间的依赖关系。这意味着如果一个子项目依赖于另一个子项目,你需要手动确保它们被以正确的顺序构建。否则可能会导致构建错误或运行时错误。
8. add_subdirectory:添加子目录,用于构建子项目。 9. find_package:查找外部依赖的库。 10. install:安装生成的可执行文件或库文件。 下面是对每个语句进行详细说明: 1. cmake_minimum_required:此语句指定所需的CMake的最低版本。例如,cmake_minimum_required(VERSION 3.10)表示需要CMake版本大于等于3.10。 2....
add_subdirectory命令,可以将指定的文件夹加到build任务列表中。 如果你的目录结构如下: image.png main是主工程的CMake目录,需要添加子目录模块sub1,那么语法如下: 默认情况下是添加当前目录的子目录,用法如下: #只需要传入相对主目录的相对路径`sub1`add_subdirectory(sub1) ...
cmake在build目录构建出prj_sln.sln解决方案,解决方案下有两个工程(project),其工程目录为prj1_name_in_build和prj2_name_in_build,每个工程目录自成体系,存放属于自己的工程文件。 具体如下: 其中prj1_ProjectName.sln是CMakeLists.txt中指定的工程名字。
后面的紧接的四个ADD_SUBDIRECTORY指令,是指CMake指令顺序进入四个路径中,顺序执行几个路径中的CMakeLists.txt文件。 这里笔者认为可以将其理解成C++的四个函数。四个函数顺序执行,按先后顺序依次处理./CustomizeFunctions ./NCFunctions ./IPCClients ./IPCServer中的CMakeLists.txt文件。如果这些CMakeLists.txt文件...
在项目中通常会遇见这样的情况:(例如一个项目中有:main,libhello.a, libworld.a),当项目过小的时候,编译顺序是*.a,然后是main,但是当一个项目的文件过于庞大,就会导致编译的顺序不会按照主CMAKE的 add_subdirectory 引入的先后顺序,为了解决这一问题,就需要使用 add_dependencies 进行依赖指定。