CMake的add |
您所在的位置:网站首页 › cmake共享库合并 › CMake的add |
一、add_library介绍
使用该命令可以在Linux下生成(静态/动态)库so或者.a文件,Windows下就是dll与lib文件,它有两种命令格式 1.1 第一种格式 : Normal Libraries,add_library命令的格式为 add_library( [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [...])生成一个名为 < name > 的library,注意以下规则: < name > 应该保证在一个项目中的唯一性。实际生成的library文件名是基于平台的约定规则,比如linux下的lib< name >.a, Windows下的< name >.lib等STATIC,SHARED,MODULE用于指定创建的library类型。STATIC库:生成obj文件后,将其链接成静态库,用于链接到其他targets。SHARED库:生成obj文件后,将其链接成动态库,用于运行时加载。MODULE库:不能链接到其他targets,但是可以用dlopen之类的方法在运行时动态加载。如果没有明确指定要生成的library的类型到底是STATIC,SHARED还是MODULE。则查看BUILD_SHARED_LIBS变量,如果值为ON,则默认是SHARED,否则默认STATIC。对于SHARED和MODULE类型的库,POSITION_INDEPENDENT_CODE属性自动置为ON。EXCLUDE_FROM_ALL:表明该target是否从默认构建target中排除。source参数可以使用generator表达式($ )。1.2 第二种格式 : 生成一个obj文件对象,该对象库只编译源文件,但不链接。 add_library( OBJECT [...])由add_library()或 add_executable()创建的目标可以使用$这样的表达式作为源引用对象,其中,name是对象库的名称。格式如下: add_library(... $ ...) add_executable(... $ ...) 二、target_link_libraries的介绍指定链接给定目标和/或其依赖项时要使用的库。命名的必须是由add_executable()或add_library()之类的命令创建的。一般与 link_directories连用(添加外部库的搜索路径 ) target_link_libraries命令的格式 target_link_libraries( ... ... ...) 三、add_library的实例四个文件hello.h,hello.cpp,main.cpp,CMakelist.txt,目录如下 hello.h #include void test(std::string str);hello.cpp #include "hello.h" #include void test(std::string str) { std::cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |