
在Windows上使用MinGW(GCC)编译器时,可以定义 CMAKE_GNUtoMS 变量,自动将GCC格式库 .dll.a 转换为微软编译器支持的 .lib 格式。
测试环境 :开发环境CLion + MinGW64和VS2019。
在 CMakeLists.txt 中添加 CMAKE_GNUtoMS_VCVARS 和 CMAKE_GNUtoMS 即可,使用时需要注意它们的位置和顺序。其中CMAKE_GNUtoMS_VCVARS用于设置MSVC工具链,完整CMakeLists.txt文件如下:
我这儿编译的是64位的库,所以使用 vcvars64.bat ,如果是32位,就是 vcvars32.bat 。
编译时输出如下:
然后把 libdemo.lib 、 libdemo.dll 和头文件拷贝到MSVC编译环境中运行即可,注意MSVC编译目标也要设置为64位。
CLion工程 ,编译器为MinGW64。
VS2019工程
把 libdemo.lib 、 libdemo.dll 和 library.h 拷贝到工程目录中,然后编译即可。
当在mac系统下编写c++程序时候,一般需要使用Xcode。如果不想装Xcode如何编译、运行程序呢?
一种方法是编写makefile文件,用makefile文件管理程序脚本之间的相互依赖关系
一、CMake是一种跨平台编译工具,比make更为高级。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序
二、cmake 指向CMakeLists.txt所在的目录,例如cmake .. 表示CMakeLists.txt在当前目录的上一级目录
cmake会生成很多中间文件,所以建议新建一个文件夹存放,分四个步骤:
1、mkdir bulid //新建文件夹存放编译的中间文件
2、cd bulid //进入bulide文件夹
3、cmake .. //因为CMakeLists.txt文件在当前目录的外面,所以cmake命令需要使用cmake ..
4、make //make命令根据makefile文件编译源码,在bulid目录下生成一个可执行文件,运行获取结果
CMakeLists.txt主要包含以上的7个步骤:
#1.cmake verson,指定cmake版本
cmake_minimum_required(VERSION 3.13)
#2.project name,指定项目的名称,一般和项目的文件夹名称FirstProject对应
PROJECT(FirstProject)
#3.head file path,头文件目录
INCLUDE_DIRECTORIES()
#4.source directory,源文件目录
AUX_SOURCE_DIRECTORY(src DIR_SRCS)
#5.set environment variable,设置环境变量,编译用到的源文件全部都要放到这里,否则编译能够通过,但是执行的时候会出现各种问题,比如"symbol lookup error xxxxx , undefined symbol"
SET(TEST_MATH)
#6.add executable file,添加要编译的可执行文件
ADD_EXECUTABLE(${PROJECT_NAME} ${TEST_MATH})
#7.add link library,添加可执行文件所需要的库(命名规则:lib+name+.so),就添加该库的名称
TARGET_LINK_LIBRARIES(${PROJECT_NAME} m)
CMake TutorialCMake Reference
定义程序编译规则
生成可执行文件的最简单版本的 CMakeLists.txt
以上CMakeLists.txt定义的编译规则是将源文件tutorial.c编译成名为 Tutorial 的可执行文件。
一般用法是,新建一个文件夹,一般命名为 build ,在终端进入该文件夹,然后调用 cmake ../ , cmake 会在找到上级目录找到 CMakeLists.txt ,生成 makefile 和一些其它文件。
在 makefile 所在目录,调用 make 命令,会根据 makefile 对程序进行编译生成。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)