最后,以一个完整的例子来结束本文(sub目录下的CMakeList.txt、test.h、test.cpp等文件内容如上文所示,没有变化),父目录下的main.cpp和CMakeList.txt如下: # 父目录下的CMakeLists.txt cmake_minimum_required(VERSION 3.10.2) project(test) include_directories(sub) add_subdirectory(sub output) add_e...
add_subdirectory(sub output) 1. 2. 3. 4. 5. 在父目录下调用cmake .构建之后,在output目录下会出现libsub.a库,sub目录下则没有libsub.a。说明当指定binary_dir,输出目标文件就会放到binary_dir目录下。 场景3:父目录CMakeLists.txt的add_subdirectory指定了EXCLUDE_FROM_ALL选项。 # 父目录下的CMakeLists...
add_subdirectory(sub output EXCLUDE_FROM_ALL) add_executable(testmain.cpp) target_link_libraries(testsub) 在父目录下调用cmake .构建之后,在output目录会出现libsub.a库,说明即使指定EXCLUDE_FROM_ALL选项,当父目录目标文件对子目录目标文件存在依赖关系时,子目录的目标文件仍然会生成以满足依赖关系。 ...
1cmake_minimum_required(VERSION2.8)2include_directories(../sub_haha ../sub_hello)3add_executable(main main.c)4target_link_libraries(main haha_lib hello_lib) sub_haha文件夹下CMakeLists.txt的内容如下: 1cmake_minimum_required(VERSION2.8)2message("message from sub_haha")3add_library(haha_lib...
# Resolve libraries built in `code` sub-folder.link_directories(${LIBRARY_OUTPUT_PATH})set(demo-projects demo-1 demo-2 ... demo-n ) foreach(demo-project${demo-projects}) add_subdirectory(${demo-project}) endforeach() project/demo/demo-n/CMakeLists.txt ...
#define ADD_SUBDIRECOTRY_TEST_H_ void test(); #endif 1. 2. 3. 4. 5. addSubdirectoryTest.cpp #include <iostream> #include "addSubdirectoryTest.h" void test() { std::cout << "子项目测试" << std::endl; } 1. 2. 3. 4. ...
在CMake中,CMakeLists.txt文件中的指令会被转换为Makefile中的目标、依赖和命令。例如,add_executable指令会生成一个目标,target_link_libraries指令会生成依赖,而实际的编译和链接命令则由CMake自动生成。 理解Makefile的基本结构和原理,对于深入理解CMake生成的Makefile有着重要的作用。在下一节中,我们将进一步探讨...
Protobuf是google开发的一个序列化和反序列化的协议库,我们可以自己设计传递数据的格式,通过.proto文件...
message (">>> in sub directory, value = ${normal_var_in_sub_dir}") # test/CMakeLists.txt cmake_minimum_required (VERSION 3.10.0) project (set_test) add_subdirectory (sub) message (">>> in top level, value = ${normal_var_in_sub_dir}") 输出结果...
SubMoudles模块内部: add_library(VectorTest SHARED ./vector_data.cpp) #指定包含路径,因为使用了 PUBLIC 参数,又因为main依赖VectorTest库, #所以包含路径会传递给main,main在被编译时就能够找到 VectorTest 的头文件。 target_include_directories(VectorTest PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) linux环境下,...