重点:
1.Cmake重要的作用是跨平台。
比如linux下部署的一个C++程序项目。通常项目之间有依赖
(1.)在如果项目没有依赖其他外部引进来的动态库或者静态库,比如引入一个linux下json.so或者json.a。在windows上要使用这个跨平台项目,需要用cmake工具编译一下,获取项目之间的环境和依赖关系。然后在利用当前的IDE取编译这个项目,获取这个项目的动态库dll或者静态库lib.
(2).如果项目有依赖外部引进的动态库或者静态库,比如引进linux下json.so或者json.a。则项目要跨平台,需要对应系统下的json动态库和静态库,或者源文件,然后在windows平台利用Cmake先编译这些源文件生成对应的json动态库和静态库,再去编译项目。
2.Cmake应该可以编译不同IDE之间的项目,前提是只是单纯用到项目的.h和.cpp以及cmakefile.txt文件。同一个平台,动态库和静态库是一样的。但不同的IDE编译需要特点依赖的库,比如vs要使用qt编好的库,首先肯定需要在vs上安装qt需要的依赖库,比如qt编写好的动态库:A.dll里面用到Qvector,而vs是没有这个容器,需要vs先配置好qt的环境,然后才能调用这个dll。
3.如果一个动态库或者静态库用C++11的一个特性A去实现,后期开发到C++30这个特性被去除,那这个动态库还能直接用吗?不能用,编译器,不会把这个动态库里面的内容转换成汇编,然后C++30项目引用的时候从汇编拿信息。所以用这个动态库会报错。这好比python3使用python2的信息,虽然你再开头加入兼容信息,但有些函数被删除掉,编译器还是会报错。