cmake文件(cmake生成so文件体积过大问题)
本文目录
cmake生成so文件体积过大问题
最近因为项目中有部分接口方法需要写在so文件中,那就简单开搞,AndroidStudio使用cmake打包生成so文件很简单,主要是c++中实现方法不复杂,具体生成so流程不多说,网上很多demo。
虽然c++文件不过几十百来行,然而生成的so文件接近1M,这肯定是属于异常的,包体积无故增加好几M,必须优化一下。
网上查了下,很多都说在*****文件中增加下面俩行:
结果肯定是无效的,不然也不会有这篇文章了 ^ - ^
使用Androidstudio打开so文件,发现有很多冗余的数据,接近上万行,因为网络上大家都建议使用c来写而不是c++,所以想着是不是调用了c++的方法库导致so文件增加的;
仔细观察发现自己使用了c++提供的md5相关算法头文件,所以导致引入文件很多,打包体积很大;
转变去掉相关引入就ok;
去掉后重新打包体积只有小几十kb;
*****文件编写
cmake使用
cmake是什么?
一.单目录单文件的编写方式
1.创建*****文件
cmake_minimum_required(VERSION ****) --版本号设置
PROJECT(工程名)
---生成可执行文件
ADD_EXECUTABLE( 目标文件(可执行文件) 依赖文件(.cpp))
二.单目录多个源文件的方式
需要添加AUX_SOURCE_DIRECTORY(./ DIR_SRCS) ------将某个目录下的文件存储在某个变量内
需要修改的是ADD_EXEXUTABLE(目标文件 ${DIR_SRCS} )
三.多文件多目录----非标准与标准的方式
工程结构:
1.先编写里面的*****文件
AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
add_library(MyLib ${DIR_LIB_SRCS})#静态库
#add_library(MyLib SHARED ${DIR_LIB_SRCS}) #动态库
2.编写外层*****
cmake链接库文件不使用-l
Never 将 -l 标志添加到 CMAKE_EXE_LINKER_FLAGS 和 》CMAKE_CXX_FLAGS(标志 -l 用于链接器,而不是编译器).
对于与库的链接,请使用 target_link_libraries:它是专门用于该目的:
target_link_libraries(《your-executable》 curl)
《小时》
当您向 *_FLAGS 变量添加标志时,该标志将在链接器的命令行中源文件之前(实际上是目标文件)添加.如果源文件使用库中的某些函数,则链接器找不到它.
cmake java
cmake java是什么,让我们一起了解下?
cmake可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。
如何使用cmake编译java工程?
cmake对编译Java代码和执行Java类文件的支持有限。
标准模块FindJava可用于查找本地机器上安装的JDK,标准模块UseJava为Java提供了一些功能,其中有一个函数add_jar来将Java源文件编译成jar文件。
这是一个小例子,演示如何使用add_jar.给定Java示例源文件。
*****: public class HelloWorld {undefined public static void main(String args) {undefined *****("Hello, World!"); } }
以下CMake列表文件将编译*****到一个jar文件*****,并添加一个使用JVM运行该jar的CMake测试:
cmake_minimum_required (VERSION ***) find_package(Java REQUIRED) include(UseJava) enable_testing() project (HelloWorld) set(CMAKE_J**A_COMPILE_FLAGS "-source" "***" "-target" "***") add_jar(HelloWorld *****) get_target_property(_jarFile HelloWorld JAR_FILE) get_target_property(_classDir HelloWorld CLASSDIR) message(STATUS "Jar file ${_jarFile}") message(STATUS "Class compiled to ${_classDir}") add_test(NAME TestHelloWorld COMMAND ${Java_J**A_EXECUTABLE} -cp ${_jarFile} HelloWorld)
CMake变量CMAKE_J**A_COMPILE_FLAGS可用于指定编译标志,作为副作用,add_jar命令将设置目标属性JAR_FILE和CLASSDIR,分别用于获取生成的jar文件和编译的类文件目录的路径。
cmake编译单/多文件
在该路径下会生成一个文件夹(CMakeFiles),三个文件(Makefile, *****, cmake_*****)以及一个程序(addition)
此时的文件目录结构为
该项目该依赖于MPI,GDAL和cereal库。MPI和GDAL库自行编译
1.配置各种编译的时候,可以使用set设置,更多详情,请自行搜索。
2.头文件的包含请使用include_directories。
3.搜索源文件请使用aux_source_directory。
4.第三方库的查找使用 find_package。例如我们想找GDAL, 那么 find_package(GDAL), 它会在 /usr/share/cmake/Modules 文件中的*****文件中去找GDAL的各种信息。前提是GDAL 是make install的, *****中才会有GDAL的各种信息。否则的话,我们需要set自行制定GDAL的相关信息。
5.第三方库的链接用target_link_libraries。
***隐藏网址***
***隐藏网址***
***隐藏网址***
cmake在哪里找.pc文件
1、首先打开第三方库,点击进入cmake。
2、其次点击设置,在设置内找到文件设置。
3、最后点击pc文件即可。
更多文章:
落地页模板网站(信息流广告落地页怎么做有没有什么网站或者模板推荐)
2026年5月5日 06:00
standardize(standardize什么意思及同义词)
2026年5月5日 05:40
showmodaldialog(windows.showmodaldialog 是什么请求)
2026年5月5日 04:20
python3 正则表达式(Python正则表达式中re.M 是什么意思)
2026年5月5日 04:00
struts2安装(如何使用eclipse安装struts)
2026年5月5日 03:40






