add_library(生成库),target_link_libraries(生成目标连接的库),set_target_properties 生成静态库: add_library(libsugan ${SRC_LISTS}) #用${SRC_LISTS}生成静态库libsugan 或 ADD_LIBRARY(static_lib STATIC ${DIR_SUB_SRCS}) 生成动态库(加SHARED ): add_library(libsugan SHARED ${SRC_LISTS}) #用$...
PROJECT_BINARY_DIR是cmake系统变量,意思是执行cmake命令的目录,我们计划在build目录下执行cmake命令,所以这个变量也就等同于build目录 add_library(lib_name STATIC/SHARED src)# 函数作用:生成库。# 参数lib_name:是要生成的库名称,# 参数STA...
add_subdirectory() 那target_inlucde_directories()是指什么,库的所有者都可以使用 外部的target #include(TARGET),它会去子文件夹cmake/TARGET文件夹,搜索TARGET.cmake的文件。 3.3、找到源文件 代码语言:javascript 代码运行次数:0 运行 AI代码解释 aux_source_directory(./src ${hello_src}) 作用: 把当前路...
如果不进行bin目录的指定,那么编译结果(包括中间结果)都将存放在build/src目录(这个目录跟原来的src目录对应),指定bin目录后,相当于在编译时将src重命名为bin,所有的中间结果和目标二进制都贱存放在bin目录中。 如果在上面的例子中将ADD_SUBDIRECTORY(src bin)改成SUBDIRS(src)。那么在build目录中将出现一个src目录,...
set(SRC_FILES main.cpp file1.cpp file2.cpp # ... ) 四、使用CMake编译多个源文件 在大型项目中,通常会有多个源文件需要编译。你可以使用add_executable命令来指定每个可执行文件及其对应的源文件列表。例如,如果你有多个源文件需要编译成不同的可执行文件,你可以这样做: cmake_minimum_required(VERSION 3.10...
add_executable(main main.c) 2.3 运行查看 在终端下切到main.c所在的目录下,然后输入以下命令运行cmake: cmake . 输出结果如下: ps:此时,建议留意一下这个文件夹下多生成的文件都有哪些。 可以看到成功生成了Makefile,还有一些cmake运行时自动生成的文件。
add_executable(main)file(GLOB_RECURSE sources CONFIGURE_DEPENDS *.cpp *.h)target_sources(main PUBLIC ${sources}) GLOB_RECURSE 的问题 会把build 目录里生成的临时 .cpp 文件(CMake会自动生成一些cpp文件用于测试)也加进来。 解决方案: 要么把源码统一放到src目录下, ...
(5)add_library 无参数时,是静态库还是动态库? (6)常见坑点:动态库无法链接静态库 6.对象的属性 (1)set_property (2)set_target_properties 批量设置多个属性 (3)通过全局的变量,让之后创建的所有对象都享有同样的属性 (4)不要通过target_compile_options设置C++标准 (5)windows使用动态链接库 7.链接第三方...
add_executable(main main.c) 2.3 运行查看 在终端下切到main.c所在的目录下,然后输入以下命令运行cmake: cmake . 输出结果如下: ps:此时,建议留意一下这个文件夹下多生成的文件都有哪些。 可以看到成功生成了Makefile,还有一些cmake运行时自动生成的文件。
02Makefile必备基础 上面我们对g++和编译过程进行了介绍,现在我们继续学习如何编写Makefile。 2.1 Makefile介绍 Makefile描述了整个工程的编译、链接等规则,它定义了一系列规则来指定哪些文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、如何产生我们想要的可执行文件。