cmake 注意事项
生活随笔
收集整理的這篇文章主要介紹了
cmake 注意事项
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. add_subdirectory()調(diào)用
CMake將在每次add_subdirectory()調(diào)用時(shí)創(chuàng)建一個(gè)新的變量作用域,因此這個(gè)參數(shù)最好的用法是放在cmaklists的最后使用,這樣的話創(chuàng)建的新的變量的作用范圍與內(nèi)存的變化就不會(huì)影響到后面的變量的使用。
查看并打印在cmake里面定義的宏在,程序中是否起到該有的作用。
#define PRINT_MACRO_HELPER(x) #x
#define PRINT_MACRO(x) #x"="PRINT_MACRO_HELPER(x) #pragma message(PRINT_MACRO(SVO_LOOP_CLOSING))
#pragma message(PRINT_MACRO(SVO_GLOBAL_MAP))
#pragma message(PRINT_MACRO(SVO_USE_OPENGV))
2. cmake編譯錯(cuò)誤"recompile with -fPIC"
現(xiàn)這個(gè)問(wèn)題原因:
使用cmake首先編譯了一個(gè)靜態(tài)庫(kù),這個(gè)靜態(tài)庫(kù)鏈接其他動(dòng)態(tài)庫(kù)會(huì)出現(xiàn)如下錯(cuò)誤:
relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
原因是因?yàn)樵谏伸o態(tài)庫(kù)的時(shí)候沒(méi)有加-fPIC選項(xiàng)
問(wèn)題解決就是在生成靜態(tài)庫(kù)的時(shí)候修改CMakelist加上-fPIC選項(xiàng)即可
第一種
add_compile_options(-fPIC)
第二種
set(CMAKE_C_FLAGS“$ {CMAKE_C_FLAGS} -fPIC”)
set(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -fPIC”)
參考
學(xué)習(xí)筆記:relocation R_X86_64_32 against `.rodata‘ can not be used when making a shared object
總結(jié)
以上是生活随笔為你收集整理的cmake 注意事项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支离破碎歌词是什么歌啊?
- 下一篇: perf+火焰图 = 性能分析利器