ADD_LIBRARY(${PROJECT_NAME} SHARED ${MYLIB_SRCS}) 关于cmake的语法就不多说了,这里只用到了其中很少的一部分。 注意其中的一点:ADD_DEFINITIONS(-DMYLIB_EXPORT),因为这个CMakeLists.txt是用来编译动态库的,因此在Windows平台下,每一个导出符号的前面需要加上__declspec(dllexport),因此需要打开宏定义:MYLIB...
3.1Windows 环境配置 安装CMake: 从官方网站下载并安装CMake。 我下载的为cmake-3.27.6-windows-x86_64.msi 2.2、双击运行,开始安装,一步步按照提示进行安装,直至安装完成。 2.3、在CMD里面输入cmake,显示如下信息则表示安装成功。 安装Visual Studio: 安装Visual Studio 2019 或更高版本,并确保安装了“使用C++的...
CMAKE_MINIMUM_REQUIRED(VERSION3.5)PROJECT(cmake_demoVERSION1.0.0)SET(CMAKE_C_STANDARD99)# 自定义宏,代码中可以使用if(CMAKE_HOST_UNIX)ADD_DEFINITIONS(-DMY_LINUX)else()ADD_DEFINITIONS(-DMY_WINDOWS)endif()ADD_SUBDIRECTORY(mylib)ADD_SUBDIRECTORY(myapp) 它所做的主要工作就是:根据不同的平台,定义相...
Windows上,习惯将debug模式下生成的动态库名后缀添加D 以作和release区分。cmake创建一个项目A,A引入动态库B,cmake怎么配置A链接动态库B的debug和release对应的库呢 本文的教程是基于 这里, 如果没有看,我推荐你先看下,再阅读本文。 核心函数 target_link_libraries# 就这一个核心函数,我通常使用它链接LIB。
cmake_minimum_required(VERSION 3.20) # 设置工程名称 PROJECT(HELLOLIB) # 创建变量SRC 源码文件 SET(SRC hello.cpp) # 添加构建目标, 动态链接库 名字叫做hello # 最后在Windows下生成 动态链接库 libhello.dll ADD_LIBRARY(hello SHARED ${SRC}) # 设定动态链接库的存储路径 SET(LIBRARY_OUTPUT_PATH ${PR...
-std=c++11 指定使用C++11标准进行编译。因为上一个代码中使用了C++11中的std::array 等特性。
link_directories( "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/x64" )find_library(ODBC32 odbc32 "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/x64") find_library(ODBCCP32 odbccp32 "C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/x64") find_libr...
所以,在链接第三方库时(在这里系统库也算是第三方库),可以用静态或动态的方式来链接这个C++运行时库。比如:你在Windows上用MSVC来编译链接你的库时,你在cmake里可以设置它是用静态还是动态的方式来链接: #设置为静态链接运行时库 set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") ...
CMake可以用来生成构建系统(Buildsystem),默认是生成Makefile。但是也可以生成不同的构建系统,使用-G...
生成的library名会根据STATIC或SHARED成为name.a或name.lib 这里的STATIC和SHARED可不设置,通过全局的BUILD_SHARED_LIBS的FALSE或TRUE来指定 windows下,如果dll没有export任何信息,则不能使用SHARED,要标识为MODULE 添加的库会被输出到以下几个目录 ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY和 RUNTIME_OUTPUT_...