使用cmake进行项目编译管理时,我们经常使用 add_library(foo SHARED foo.cpp) 这样的话,输出时,如果在win下面会得到foo.dll,linux下面会得到libfoo.so,mac 下得到libfoo.dylib 如果我们编写的是用于lua扩展的C模块,那么在进行require的时候,比如这样: require 'libfoo' --默认加载libfoo.[so|dll],并且执行luaopen_libluafoorequire 'foo' --加载foo.so…
https://stackoverflow.com/questions/43439549/force-cmake-in-verbose-mode-via-gradle-and-the-android-ndk   In Android Studio, gradle creates directory .externalNativeBuild under the module root, for each module that has NDK integration, via CMake or n…
DWORD PeopleBase =0x9CD674;//天龙人物基址 //获取人物名称 char * CData::GetPeopleName() {     char * name="";     _try     {         _asm         {             mov eax,PeopleBase             mov eax,[eax]             mov eax,[eax+0x70]             mov eax,[e…
CMakeLists.txt SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/lib) ADD_LIBRARY(filename SHARED ${CURRENT_SOURCES} ${CURRENT_INCLUDE}) 运行完成之后可以在库文件的输出目录看到libfilename.so文件. 参考 1. linux下CMake生成动态链接库,g++包含生成动态链接库: 2. CMake方式编译生成so库; 3. cmake同时生成动态库与静态库的方法;…
1. find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式. 具体查找路径依次为CMake:  变量${CMAKE_MODULE_PATH}中的所有目录. 如果没有,然后再查看它自己的模块目录 /share/cmake-x.y/Modules/ ($CMAKE_ROOT的具体值可以通过CMake中message命令输出). $CMAKE_ROOT = /usr/share/cmake-3.7 /usr/sha…
1. find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式.具体查找路径依次为CMake: 变量${CMAKE_MODULE_PATH}中的所有目录.如果没有,然后再查看它自己的模块目录 /share/cmake-x.y/Modules/ ($CMAKE_ROOT的具体值可以通过CMake中message命令输出).这称为模块模式. 2. 如果没找到这样的文件,find_package()会在~/.cmake…
Linux的.a..so和.o文件 - chlele0105的专栏 - CSDN博客 https://blog.csdn.net/chlele0105/article/details/23691147 在说明Linux的.a..so和.o文件关系之前,先来看看windows下obj,lib,dll,exe的关系 https://zh.wikipedia.org/wiki/动态链接库 动态链接库(英语:Dynamic-link library,缩写为DLL)是微软公司在微软视窗操作系统中实现共享函…
在做算法部署的过程中,我们一般都是用C++开发,主要原因是C++的高效性,而构建维护一个大型C++工程的过程中,如何管理不同子模块之间的依赖.外部依赖库.头文件和源文件如何隔离.编译的时候又该如何相互依赖这些问题,直接用Makefile实现是比较麻烦的.这个时候,CMake的优势就显现出来了,简洁的命令大大简化了项目构建过程,而且其跨平台特性也方便了不同部署平台间的迁移.这里我想把工作这一年来,在实践过程中学到的CMake用法做个总结.这里会参考一篇在知乎写的非常不错的文章,但这里我只记录我认为…
1. 继承MultipleTextOutputFormat实现自己的输出类. 2. 重写generateFileNameForKeyValue方法,返回输出的名字,可通过"/"分割表示目录路径. 3. 重写generateActualValue方法,返回真实的value. 4. 将类编译打包成jar,在运行streaming作业时设置-libjars YourJar.jar  -outputformat YourPackage.YourOutputClass选项 示例: package…
一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: tmux: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory 原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可. 另外一个原因就是已经安装了该共…