cmakelist书写注意

本文详细介绍了CMake的安装配置过程,包括如何使用CMAKE_INSTALL_PREFIX指定安装路径,以及make和make install的区别。同时,还讲解了不同类型的库文件(.h, .a, .so)如何在Linux系统中进行安装和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CMAKE_INSTALL_PREFIX 是一般指的是make install的系统路径,把.h文件和.a文件等复制到系统内部

而在linux里面是装在usr/incldue 和 usr/lib里面

make一般是装在本地就是自己下载的库下面

make install是装再系统里面 如果有的库没有装载系统里面的话 删除那个package只要把那个文件夹给删掉就行了

系统里面是没有那个package的

所以说一般就是可以git回来源码 make 和 make install后就能把源码给删除掉,因为系统内部就已经有了

如果有的库没有make install这个选项 只有make的话,那么可以把源码的.h文件都给搬到usr/include内部

把生成的.a 或者 .so文件给搬到usr/lib里面 然后把这个源码就可以删除了

关于.a文件和.so文件 o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库)

类似于windows 下面的.lib文件和.dll文件

目前.dll/.so文件的内存是比.lib/.a文件更加轻盈,所以一般首选.so 和 .dll文件 也是趋势


### CMake 列表使用方法及其属性 在CMake中,列表(Lists)是一组由分号`;`分割的字符串。这些列表可以用于管理源文件、目标依赖项以及其他配置参数。 #### 创建和操作列表 创建一个简单的列表可以通过直接赋值给变量来完成: ```cmake set(MY_LIST item1 item2 item3) ``` 为了向现有列表添加新元素,可以使用`list(APPEND ...)`命令[^1]: ```cmake list(APPEND MY_LIST item4 item5) ``` 移除指定位置处的一个或多个项目也可以通过`list(REMOVE_AT ...)`实现: ```cmake list(REMOVE_AT MY_LIST 0 2) ``` 如果想要删除特定名称的条目,则应采用`list(FILTER ... EXCLUDE REGEX "...")`的方式[^2]: ```cmake list(FILTER MY_LIST EXCLUDE REGEX "^item.*$") ``` 对于遍历整个列表并对其成员执行某些处理逻辑的情况,通常会结合foreach循环语句一起工作: ```cmake foreach(item IN LISTS MY_LIST) message(STATUS "Processing ${item}") endforeach() ``` #### 常见属性设置 当涉及到更复杂的构建需求时,可能还需要调整一些与列表有关的目标属性。例如,在定义好所有的源码之后,就可以利用`target_sources()`函数指明哪些文件应该被编译到最终产物里去;而像优化级别这样的编译器标志则可通过修改`${PROJECT_NAME}_PROPERTIES`来进行全局控制[^3]。 另外值得注意的是,针对不同平台下的链接行为差异性较大,因此有时也需要借助于条件判断语句(如if/else)配合相应环境变量(比如UNIX, WIN32等),从而确保跨平台兼容性的良好表现[^4]。 ```cmake if(WIN32 AND NOT UNIX) target_link_libraries(${PROJECT_NAME} PRIVATE some_windows_library) endif() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值