add_library(MyInterface INTERFACE source1.cpp source2.cpp) 这将导致 CMake 报错:“add_library interface library requires no source arguments”。此外,即使语法上没有错误,将源文件包含在接口库中也是逻辑上的错误,因为接口库不应该编译任何源代码。 提供解决“add_library interface library requires no source...
target_include_directories()生成INCLUDE_DIRECTORIES, INTERFACE_INCLUDE_DIRECTORIES两个变量。如果只是用于库的实现,那应该用PRIVATE关键字;如果是库的头文件也使用了依赖,应该使用PUBLIC关键字;如果只是头文件使用了的话,那么可以用INTERFACE关键字。默认是什么关键字的? target_compile_definitions()生成COMPILE_DEFINITIONS...
add_library(<name> INTERFACE [IMPORTED [GLOBAL]]) 这类库有属性,能install(),export和imported,但可能没有build过程。像纯头文件库或完全针对target的设计(这条参见interface libraries) 所有INTERFACE _*属性从如下几个方法中设置 set_property()、target_link_libraries(INTERFACE)、target_link_options(INTERFACE)...
) 在上述示例中,通过find_library()函数查找并设置了每个小库的路径。然后,我们使用add_library()创建了一个名为mylib的INTERFACE IMPORTED目标。接着,使用set_target_properties()函数为mylib设置了属性,将每个小库的路径赋值给了INTERFACE_LINK_LIBRARIES属性。 这样,在其他需要使用mylib的地方,只需要通过target_link...
在CMake中,使用add_library()函数可以添加一个库。对于Boost的文件系统库,你可以这样补全代码: find_package(BoostREQUIRED COMPONENTS filesystem) add_library(boost_filesystem INTERFACE IMPORTED) set_property(TARGET boost_filesystem PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIRS}) ...
add_library(<name> <SHARED|STATIC|MODULE|INTERFACE> [source1] [source2 ...]) 其中,<name>是你要创建的库的名称,<SHARED|STATIC|MODULE|INTERFACE>用于指定库的类型。你可以选择的类型包括SHARED(共享库,Shared Libraries)、STATIC(静态库,Static Libraries)、MODULE(模块库,Module Libraries)或INTERFACE(接口库...
One solution is to use ADD_LIBRARY(thread-pool INTERFACE) but that only works with CMake 3.0 and I've 2.8 installed. I am not asking for a solution on how to upgrade CMake to 3.0 but is there any alternative way that I can use with CMake 2.6 or 2.8 ? One way that comes in my...
add_library(<name> INTERFACE [IMPORTED [GLOBAL]]) 这类库有属性,能install(),export和imported,但可能没有build过程。像纯头文件库或完全针对target的设计(这条参见interface libraries) 回到顶部 为库起别名 为给定library添加一个别名,后续可使用<name>来替代<target>。
而[item]表示库文件没有后缀的名字。默认情况下,库依赖项是传递的。当这个目标链接到另一个目标时,链接到这个目标的库也会出现在另一个目标的连接线上。这个传递的接口存储在interface_link_libraries的目标属性中,可以通过设置该属性直接重写传递接口。 例子如下:...
在CMake中,add_library命令可以创建四种类型的库:SHARED,STATIC,MODULE和INTERFACE。本章将主要关注MODULE库。 MODULE(模块库)是一种特殊类型的动态库,它可以在程序运行时被加载。与普通动态库(SHARED库)的主要区别在于,MODULE库通常不会被链接到其他目标(例如,另一个库或可执行文件)。相反,它们通常在运行时使用特定...