注意其中的一点:ADD_DEFINITIONS(-DMYLIB_EXPORT),因为这个CMakeLists.txt是用来编译动态库的,因此在Windows平台下,每一个导出符号的前面需要加上__declspec(dllexport),因此需要打开宏定义:MYLIB_EXPORT。 myapp 应用程序的代码就更简单了,只有两个文件:myapp.c 和 CMakeLists.txt,内容如下: // myapp/myapp.c ...
宏定义在Windows动态库编译时,通过开启MYLIB_EXPORT宏导出符号,而在应用程序myapp中,需要关闭该宏。CMakeLists.txt文件中,通过ADD_DEFINITIONS指定编译时的宏。myapp示例应用程序myapp相当简单,仅包含myapp.c和CMakeLists.txt,通过TARGET_LINK_LIBRARIES链接mylib库。编译时需指定头文件和库文件查找路...
注意其中的一点:ADD_DEFINITIONS(-DMYLIB_EXPORT),因为这个CMakeLists.txt是用来编译动态库的,因此在Windows平台下,每一个导出符号的前面需要加上__declspec(dllexport),因此需要打开宏定义:MYLIB_EXPORT。 myapp 应用程序的代码就更简单了,只有两个文件:myapp.c 和 CMakeLists.txt,内容如下: // myapp/myapp.c ...
// myapp/CMakeLists.txt 文件CMAKE_MINIMUM_REQUIRED(VERSION3.5)PROJECT(myappVERSION1.0.0)# 头文件路径INCLUDE_DIRECTORIES(./include)# 库文件路径LINK_DIRECTORIES(./lib)# 源文件FILE(GLOBMYAPP_SRCS"*.c")# 编译目标ADD_EXECUTABLE(${PROJECT_NAME}${MYAPP_SRCS})# 依赖的动态库TARGET_LINK_LIBRARIES(...
本文的内容很基础,算是使用 cmake 来构建跨平台程序的入门教程吧! 示例代码 首先看一下测试代码的全貌: mylib:只有一个源文件,编译输出一个动态库; myapp:也只有一个源文件,链接 mylib 动态库,编译输出一个可执行程序; mylib 在mylib目录中,一共有3个文件:mylib.h, mylib.c 以及 CMakeLists.txt,内容...
示例代码 首先看一下测试代码的全貌: mylib:只有一个源文件,编译输出一个动态库; myapp:也只有一个源文件,链接 mylib 动态库,编译输出一个可执行程序; mylib 在mylib目录中,一共有3个文件:mylib.h, mylib.c 以及 CMakeLists.txt,内容分别如下: ...