# 三方库的Compile

这里更多的是在于一些编译技巧的整理

# Debug和Release

Debug和Release和字面的意思一样,用途不一样

  • 前者用在gdb时候能跳转源代码方便找错
  • 后者就是错了一般就一个代码(如果自己不写try..catch)的话, 但执行效率会高很多

Debug和Release最大的区别就是在标准编译器下(gcc/g++),是否添加了-g标识符号

在cmake里,使用简单set(CMAKE_BUILD_TYPE Debug)就能完成

  • 当然不是绝对的,很多时候能否真实编译出来,还要调整编译的优化程度等

# CMAKE_PREFIX_PATH

cmake的包搜索通常是不会递归搜索子路径的,除了此变量下的目录

  • 修改这个变量通常是在子模块很多的时候
  • 一个一个的找到xxxConfig.cmake文件过于繁琐的时候
  • 典型的就是Qt的cmake目录,里面文件好多好多,一个个加目录要疯,这个变量就很好的解决这个问题

当然别加太多,编译时间会有点长

# CMAKE_INSTALL_PREFIX

所有的cmake组织的包文件/执行文件,通常都会直接安装到系统目录下

  • 这挺不好的,如果代码还不稳定更新比较多的情况下
  • 指定这个变量,让make install命令,能够安装到非系统路径

当然这也有个坏处阿,不在系统路径的动态库需要加入ld.so.conf动态库搜索文件,否则一般无法执行

Last Updated: 3/6/2023, 8:25:31 PM