cmake 注意事项
生活随笔
收集整理的這篇文章主要介紹了
cmake 注意事项
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. add_subdirectory()調用
CMake將在每次add_subdirectory()調用時創建一個新的變量作用域,因此這個參數最好的用法是放在cmaklists的最后使用,這樣的話創建的新的變量的作用范圍與內存的變化就不會影響到后面的變量的使用。
查看并打印在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編譯錯誤"recompile with -fPIC"
現這個問題原因:
使用cmake首先編譯了一個靜態庫,這個靜態庫鏈接其他動態庫會出現如下錯誤:
relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
原因是因為在生成靜態庫的時候沒有加-fPIC選項
問題解決就是在生成靜態庫的時候修改CMakelist加上-fPIC選項即可
第一種
add_compile_options(-fPIC)
第二種
set(CMAKE_C_FLAGS“$ {CMAKE_C_FLAGS} -fPIC”)
set(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -fPIC”)
參考
學習筆記:relocation R_X86_64_32 against `.rodata‘ can not be used when making a shared object
總結
以上是生活随笔為你收集整理的cmake 注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支离破碎歌词是什么歌啊?
- 下一篇: 求一个coc创建部落好听的名字。