PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> ) In this example, target_include_directories adds two include directories to the build of the MyLibrary target: The include directory is added as a PUBLIC include directo...
cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/path/to/install/ cmake --build build -j8 cmake --build build --target test cmake --build build --target install Windows平台使用默认的VS2019的工具链,对应的四步命令:构建+编译+测试+安装 cma...
cmake_minimum_required(VERSION 3.14) project(MathLib VERSION 1.0.0) # 定义静态库目标 add_library(MathLib STATIC src/MathLib.cpp) # 设置头文件路径 target_include_directories(MathLib PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include> # 构建时用 $<INSTALL_INTERFACE:include> # 安装后用 ) ...
这些命令将它们的参数填入对应的INCLUDE_DIRECTORIES,COMPILE_DEFINITIONS和COMPILE_OPTIONS目标属性,以及对应的INTERFACE_INCLUDE_DIRECTORIES,INTERFACE_COMPILE_DEFINITIONS和INTERFACE_COMPILE_OPTIONS目标属性。 这些指令具有PRIVATE,PUBLIC和INTERFACE三个模式。PRIVATE模式下,参数只填入non-INTERFACE类目标属性,INTERFACE模式下只填入...
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/${INSTALL_INCLUDEDIR}> $<INSTALL_INTERFACE:${INSTALL_INCLUDEDIR}> ) 链接库和目标属性与前一个食谱相比未更改: 代码语言:javascript 复制 target_link_libraries(message-static PUBLIC $<$<BOOL:${UUID_FOUND}>:PkgConfig::UUID> ...
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>" ) 使用logger库的主工程 这个cmake只要把logger库link进来就可以了,logger库内的头文件搜索路径都被一并继承了。 set(module_name sctp_proxy) project(&{module_name} CXX) add_subdirectory(libs) ...
实验结果展示了使用PRIVATE、INTERFACE和PUBLIC链接选项时编译命令的差异,以及生成的libbar.so和app文件在链接关系上的表现。通过实验,可以发现,CMake在生成编译命令时,会应用库之间的依赖关系,但仅在文件生成时体现,实际文件中并无体现链接选项的标记。实验还验证了,如果有一个现成的libbar.so,导入...
project(xxx VERSION 1.0.0) aux_source_directory(. DIR_SRCS) add_library(${PROJECT_NAME} SHARED ${DIR_SRCS}) target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>) # --- install script --- set_target_properties(${...
常用的生成表达式有 BUILD_INTERFACE 和INSTALL_INTERFACE 生成表达式。 代码语言:javascript 复制 target_include_directories( MyTarget PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> ) BUILD_INTERFACE 表达式包装的构建需求只被在同一个构建系统下,或者使用 export() ...
mkdir build进入至build文件夹中 highlighter- Bash cd buildcmake 配置 如果已安装了VS,可能会调用MS的MSVC编译器,使用下面命令来代替 cmake ..即可highlighter- Bash cmake -G "MinGW Makefiles" ..只有第一次使用cmake时使用以上命令,后续便可直接使用cmake ..编译...