Cmake使用中常见问题及其解决方法

时间:2025-02-21 08:45:53

Cmake使用总结

Cmake中常见问题:## 标题 ##
1. 下载问题。经常需要从国外下载第三方包,由于网络问题可能会下载失败!建议开启VPN进行下载,或者从其他下载源下载后进行手动解压并放到指定路径下。
2. 路径问题。Cmake中往往需要填写路径,但是许多人填写的路径极其不规范,比如路径“C:\Program Files (x86)\新建文件夹 (2)”,这个路径会有三个问题:第一,有中文,虽然现在很多软件都支持中文,但是出现中文会增加失败的风险;第二,空格,这是很多人忽略的问题,还有其他的奇怪的符号,至于用哪些符号比较保险,请参考《Unix高级环境编程》第一章;第三, 路径分隔符,这是Cmake中非常常见的问题,Cmake是开源软件,开源软件请尽量按照Unix/Linux的标准来使用,比如Linux中的路径为“/home/hello”,都是以“/”做为分隔符,而Windows中以“\”作为分隔符。如果使用了“\”, 那么路径“C:\Demo”会将 “\D”当成转义字符!
3. 的文件中出现一系列简写。比如:变量${CMAKE_LIBRARY_PATH_FLAG}直接写成-L, 那么在连接字符串中会出现错误,所以写尽量按照标准写法, 不要图省事。案例请参考: /wfh2015/article/details/53447635
4. 中的读取第三方库问题, 如经常会依赖第三方库,比如常见的boost库,曾经我在编译PCL库的时候意外发现一个问题,cmake只能使用通过源码编译的库,而不能使用通过网上编译好的库,因为在一些文件中,已经固定了boost的目录必须是什么样子的格式。
5. Cmake版本问题,由于不同版本会有不同的规则,请不要使用太高的cmake版本。个人认为:请使用比编译器版本稍微高一点的版本。比如我用的是vs2015的vc++编译器,那么cmake应该选择Release日期在2015年-2016年的版本。
6. 仍然属于第三方库问题,目录不要随意变动!比如我库A依赖库B,现在有库B和库A的源码,顺序肯定是先编译库B,再编译库A。有些人在库编译好了之后,会移动库B的目录,最好不要这样做!因为生成的库B当中往往会有一些.cmake文件,里面会写死了一些路径,如果随意修改目录,那么库A在编译的时候会使用这些.cmake文件而出现问题!

总结:
1. 使用cmake请按照Unix或者Linux的规范来使用!
2. 如果发现自己不能解决的错误,首先尝试是换一个版本的cmake
3. 如果还是出现问题,请分析或者.cmake文件