set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}") 1. 2. 2、add_library命令,写一条生成一个so库。 如果不想生成太多so库,那就用target_link_libraries将target都链接到一个library中。 一、cmake构建系统 1、Binary Targets 使用add_executable() 和 add_library() 命令定义可执行文件和库。生...
add_library(MathFunctions mysqrt.cpp) 1. 新建MathFunctions.h,在里面定义 // 声明函数的形式 double mysqrt(double x); 1. 2. 在这个文件夹中创建源文件mysqrt.cpp。在里面实现这个函数。 添加这个新库到项目 为了利用新库,在工程根目录下的CMakeLists.txt添加add_subdirectory()来构建我们自己的库。 最后...
cmake -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7.so\ -DPYTHON_INCLUDE_DIR=/usr/include/python2.7\ -DPYTHON_EXECUTABLE=/usr/bin/python2.7\ .. 这时候给出的cmake信息为: --FoundPythonInterp:/usr/bin/python2.7(found version"2.7.17") --FoundPythonLibs:/usr/lib/x86_64-linux...
2.无效的函数python_add_library 由于pybind11在python3.8导出的模块只能给对应的python3.8版本用,导致想用多个python版本跑行不通,因此得多个版本编译 cmake脚本应修改为: find_package (Python 3.8 EXACT COMPONENTS Interpreter Development REQUIRED) find_package(pybind11 REQUIRED) pybind11_add_module(${PROJECT_...
find_package(PythonInterp REQUIRED) find_program(BASH_EXECUTABLE NAMES bash REQUIRED) 然后我们定义了库、主可执行文件的依赖项以及测试可执行文件: 代码语言:javascript 复制 # example library add_library(sum_integers sum_integers.cpp) # main code ...
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) ...
CMake支持创建静态库和动态库。默认情况下,add_library()命令会创建一个静态库。如果你想要创建一个动态库,你需要在命令中添加SHARED参数,例如:add_library(MyLib SHARED main.cpp)。 如果你想要同时创建静态库和动态库,你可以将它们都列出来,例如:add_library(MyLibStatic STATIC main.cpp)和add_library(MyLibSh...
CMake除了add_executable可以生成可执行文件外,还可以通过add_library生成库文件。add_library的语法与add_executable大致相同,除了他需要指定生成的是动态库还是静态库: add_library(testSTATICsource1.cppsource2.cpp)# 生成静态库 libtest.a`add_library(testSHAREDsource1.cppsource2.cpp)#生成动态库libtest.so` ...
add_library(mylib SHARED ${SRC_FILES}) 唯一的变化就是将add_library命令里的STATIC改成了SHARED,是不是很简单? 接着我们同样,在lib目录下创建一个mylib的目录,运行cmake,如下: benggee@benggee:~/app/c-program/cmake/lib/mylib$ cmake .. ...
add_library(libraryName[STATIC|SHARED|MODULE][EXCLUDE_FROM_ALL]source1 source2...) Firstly, the first parameter toadd_libraryis the name of the library. This can be any valid CMake name, and the filename for the compiled library will be that value in your build directory. In...