cmake配置引入外部动态dylib or so or dll文件
发布时间:2020-12-13 21:22:24 所属栏目:Windows 来源:网络整理
导读:以前写java的时候,想要引入外部一个jar包,直接在pom.xml配置依赖就可以,写c++也可以在CMakeList.txt进行配置target_link_libraries配置既可以,下面也还是通过一个demo进行说明,把A项目打包成dylib,在B项目中引用: 下面直接看A项目逻辑,在A项目中我写
以前写java的时候,想要引入外部一个jar包,直接在pom.xml配置依赖就可以,写c++也可以在CMakeList.txt进行配置target_link_libraries配置既可以,下面也还是通过一个demo进行说明,把A项目打包成dylib,在B项目中引用: 下面直接看A项目逻辑,在A项目中我写一个偶数相加的方法打包,其基本文件见如下: CMakeLists.txt build evenplus.cpp evenplus.h 其中有一个头文件和一个源文件,里面的逻辑如下 evenplus.h: int evenadd(int); evenplus.cpp: #include "evenplus.h" #include <iostream> int evenadd(int n){ int sum=0; for(int i=0;i<n;i++){ if(i%2==0){ sum+=i; } } return sum; } CMakeLists.txt文件见如下: cmake_minimum_required(VERSION 3.10) project(evenplus) set(CMAKE_CXX_STANDARD 11) add_library(evenplus SHARED evenplus.h evenplus.cpp)#增加一个生成一个库文件,就是生成dylib文件,自动生成lib的格式 #add_executable(result main.cpp) #生成一个可执行的文件 #target_link_libraries(result evenplus) 在build文件夹下面使用 cmake.. && make 进行编译,就会生成libevenplus.dylib, 再看B项目CMakeLists.txt的文件: cmake_minimum_required(VERSION 3.10) project(cmakedemo) set(CMAKE_CXX_STANDARD 11) #引入头文件环境变量目录,cpp或者h文件中#include会自动去搜索这些头文件 include_directories(/Users/zhoumeixu/Documents/cmakedemoa) #引入dylib 或者 dll so文件环境目录,自动去搜索该目录下的相对于的dylib so dll文件 link_directories(/Users/zhoumeixu/Documents/cmakedemoa/build) add_subdirectory(addlib) #包含子目录下面的文件 add_executable(cmakedemo main.cpp) #生成一个可执行文件。 target_link_libraries(cmakedemo addliblibrary libevenplus.dylib) 再看main.cpp : #include <iostream> #include "acclib/library.h" #include <string> #include "cmakedemoa/evenplus.h" using namespace std; int main() { int n=10; int ans=acc_add(n); cout<<"1+......+"<<n<<" = "<<ans<<endl; int even_sum= evenadd(n); cout<<"偶数相加的结果是"<<endl; cout<<"1+....+"<<n<<"="<<even_sum<<endl; return 0; } 就这样引进来就可以用: 1+......+10 = 45偶数相加的结果是1+....+10=20 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- winapi – 如何获得与Windows主题相关的图标?
- windows – 禁用Shift Delete
- windows – KMS – 哪些客户获得许可?
- 如何在Windows上的DNS中找到LDAP服务器?
- active-directory – Active Directory管理中心更新对象时崩
- 为什么Windows XP防火墙在启动时不会使用域设置?
- Windows上的PHP / MySQLi:插入MySQL innoDB表将AUTO_INCRE
- 如何在Microsoft Reporting Services RDL报告中有条件地突出
- .net core 任务调度
- windows – 批量替换多个不同的字符串
推荐文章
站长推荐
热点阅读