add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED [GLOBAL]) 1. 2. 这种用法直接导入已经生成的库,cmake不会给这类library添加编译规则。 这种用法的关键在于添加变量IMPORTED。 另外,GLOBAL可用于设置这个library为全局可见。 常规和imported的library的属性不同: 常规的library,其属性以INTERFACE_...
add_library(MathFunctions mysqrt.cpp) 1. 新建MathFunctions.h,在里面定义 // 声明函数的形式 double mysqrt(double x); 1. 2. 在这个文件夹中创建源文件mysqrt.cpp。在里面实现这个函数。 添加这个新库到项目 为了利用新库,在工程根目录下的CMakeLists.txt添加add_subdirectory()来构建我们自己的库。 最后...
CMake除了add_executable可以生成可执行文件外,还可以通过add_library生成库文件。add_library的语法与add_executable大致相同,除了他需要指定生成的是动态库还是静态库: add_library(testSTATICsource1.cppsource2.cpp)# 生成静态库 libtest.a`add_library(testSHAREDsource1.cppsource2.cpp)#生成动态库libtest.so` ...
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test.py --executable $<TARGET_FILE:sum_up> ) add_test( NAME python_test_short COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test.py --short --executable $<TARGET_FILE:sum_up> ) 现在,我们准备好配置和构建代码了。首先...
add_executable(demo main.cpp ) 6. 最后贴一个完整的例子 cmake_minimum_required (VERSION 2.6) INCLUDE_DIRECTORIES(../../thirdparty/comm) FIND_LIBRARY(COMM_LIB comm ../../thirdparty/comm/lib NO_DEFAULT_PATH) FIND_LIBRARY(RUNTIME_LIB rt /usr/lib /usr/local/lib NO_DEFAULT_PATH) ...
add_library(calc STATIC calc.cpp) target_include_directories(calc INTERFACE include) 然后,我们要求 CMake 使用export(TARGETS)命令生成导出文件: chapter-11/01-export/CMakeLists.txt(片段) 代码语言:javascript 复制 cmake_minimum_required(VERSION 3.20.0) ...
一个CMakeLists.txt文件中,可以通过add_library、add_executable命令添加任意多的构建目标。这个在Makefile的语法中,对应一个单独的构建目标。所以,这些target就是在遇到CMakeLists.txt中的add_library、add_executable时创建。 cmake-3.20.6\Source\cmGlobalGenerator.cxx ...
CMake支持创建静态库和动态库。默认情况下,add_library()命令会创建一个静态库。如果你想要创建一个动态库,你需要在命令中添加SHARED参数,例如:add_library(MyLib SHARED main.cpp)。 如果你想要同时创建静态库和动态库,你可以将它们都列出来,例如:add_library(MyLibStatic STATIC main.cpp)和add_library(MyLibSh...
add_library(mylib linux_specific_code.c) elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") # 编译Windows平台的源文件 以下是跨平台设计的流程图: 在这里插入图片描述 在大型C/C++项目中,我们需要考虑到跨平台设计。这主要涉及到如何使用CMake来配置和管理不同平台的编译环境。CMake本身就是一个跨平台的构建工具...