#要求的Cmake最低版本CMAKE_MINIMUM_REQUIRED( VERSION 2.8)#工程名称PROJECT(main)#设置编译器编译模式:set( CMAKE_BUILD_TYPE"Debug")#生成共享库#get the shared package#here needs no .hppadd_library(calculate_shared SHARED hello.cpp)#生成可以执行的文件add_executable(main main.cpp)#连接共享库target_...
add_library(add_object OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/source/add.cpp) # 在build目录下不会有add_object文件生成 if(TARGET add_object) message("target: object library add") # print endif() 1. 2. 3. 4. 5. 3.Interface Libraries:创建接口库(Interface Library).INTERFACE库目标不编译源代码...
add_library( INTERFACE) add_library( IMPORTED [GLOBAL]) 有了子目录中的CMakeLists.txt还不够,我们需要在根目录的CMakeLists.txt添加一些内容,建立根目录与子目录math的联系。建立联系很简单,我们只需要在根目录的CMakeLists.txt中添加如下一行代码即可。 add_subdirectory(math) 当添加上述代码后,我们在build目...
命名的 必须由诸如 add_executable() 或 add_library() 之类的命令创建,并且不能为ALIAS target。 需要 INTERFACE , PUBLIC 和 PRIVATE 关键字来指定其后各项的范围。 PRIVATE 和 PUBLIC 项目将填充 的 LINK_DIRECTORIES 属性。 PUBLIC 和 INTERFACE 项目将填充 的 INTERFACE_LINK_DIRECTORIES 属性(“ 导入的目标”...
为了在CMake中创建静态库,我们需要在项目的CMakeLists.txt文件中使用add_library命令,并指定库的类型为STATIC。以下是在lib/MathLib目录下创建一个静态库的基本示例: # 定义一个名为 "MathLib" 的静态库 add_library(MathLib STATIC mathlib.cpp) 在这个示例中,MathLib是我们创建的静态库的名称,STATIC关键字指定...
Scopeis an optional argument that can be eitherPUBLIC,PRIVATE, orINTERFACE. The last parameter(s) is alist of libraries to link, where each item is the name of the library given inadd_library. For more information on the scope, check out thissection ontarget_include_directoriesin CMake. ...
add_library(<name> INTERFACE) add_library(<name> INTERFACE [...] [EXCLUDE_FROM_ALL]) 接口库不编译和依赖源文件,不产生一个实体库文件,但可用于安装和导出属性到链接它的目标。 INTERFACE 库似乎只是导出了自己的 include_dir 属性(以及 interface_link_lib、interface_link_options 等),从而允许链接它的库...
std::cout << "this is a simple example!" << "\n"; return 0; } 1. 2. 3. 4. 5. 6. 再创建一个名称为CMakeLists.txt的文件,这个文件正是cmake使用的文件。文件的内容如下,是不是很简单。 复制 cmake_minimum_required(VERSION 3.16) ...
编译给定的 <target> 时使用指定的编译定义。<target> 必须是 add_executable() 或者 add_library() 创建的,并且不是一个输入目标。 The INTERFACE, PUBLIC and PRIVATE keywords are required to specify the scope of the following arguments. PRIVATE and PUBLIC items will populate the COMPILE_DEFINITIONS pro...
add_library(archive SHARED ${srcs}) if (LZMA_FOUND) # The archive library sources are compiled with -DBUILDING_WITH_LZMA target_compile_definitions(archive PRIVATE BUILDING_WITH_LZMA) endif() target_compile_definitions(archive INTERFACE USING_ARCHIVE_LIB) ...