cmake 添加编译选项的几种方式

cmake 添加编译选项的几种方式,第1张

This is initialized for each language from environment variables:

Flags for language <LANG>when building for the <CONFIG>亮段 configuration.

SET(CMAKE_C_FLAGS_DEBUG "-g -D_DEBUG -O0")

SET(CMAKE_C_FLAGS_RELEASE "岁陆-g -DNDEBUG -O3")

SET(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG -O0"敬雀誉)

SET(CMAKE_CXX_FLAGS_RELEASE "-g -DNDEBUG -O3")

在configure的时候碧闭,加上–悔早裂host=arm-linux,结果没有实现我们要睁咐的效果,没有将编译器从默认的 gcc改成arm-linux-gcc,编译器还是用的默认的gcc: [crifan@localhost lrzsz-0.12.20]$ CFLAGS=-O2

在工程搭建时,可能会有将静态库链接成动态库的需求,如出于代码保护的角度,某些模块会发布.a扩展名的静态库,我们要将多个这样的静态库链接成一个动态库。但与盯铅直接link目标文件不同的是,ld以默认参数执行时,并把静态库中没有用到的函数过滤掉,导致生成的so并未包含所要的函数,因此要加上--whole-archive参数,以保凯乱好证所有的函数都包含在生成的so中。在使用cmake时,CMakeLists.txt的写法如下:add_library(${MODULE_NAME}SHARED${CMAKE_SOURCE_DIR}/builttime.c #要生成一个so,至少要包陪简含一个源文件,实在没有可以把库的编译时间戳打到这儿。)target_link_libraries(${MODULE_NAME}${${MODULE_NAME}_EXTRA_LDFLAGS}"-Wl,--whole-archive" #告诉编译器,从这里开始,所有的库的内容都包含到so中${LOCAL_MODULES} #可以是以源代码生成的静态库${PREBUILT_MODULES} #可以是预先生成的静态库"-Wl,--no-whole-archive" #告诉编译器,从这里开始,以后的库的内容不用都包含到so中)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11993934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存