CMake
文章平均质量分 69
一些CMake使用分享
小花与卷卷
这个作者很懒,什么都没留下…
展开
-
从项目开始学习CMake(2)
另外针对target_link_directories与link_directories的区别在于link_directories不用在add_library与add_execute后使用(合理,因为没有制定target),但是因此它会对后续的项目都产生影响,通俗理解就是如果你该目录下还有子目录,那么在add_subdirectory后的项目中也会有效果,因此一般建议使用target_link,这样方便控制影响。其中的SHARED表示这个文件为动态库,如果需要生成静态库文件,需要修改成STATIC,原创 2024-08-02 16:08:24 · 685 阅读 · 0 评论 -
从项目开始学习CMake(1)
cmake一般可以很好的用来进行c++项目构建与编译,通过编写对应的cmakelists.txt文件,可以设置一些项目的属性以及一些依赖库,对应的源文件和头文件等,而且支持if,所以可以对平台或者一些其他选项做隔离处理。接下来是include命令,这个命令可以按下方这样使用,这样的话可以把相关的一些配置区分开来,而不是一股脑的堆在一个文件,不方便阅读和维护,像如下这样操作,就可以在不同的.cmake文件中设置不同的内容。接下来是set命令,比如你可以设置一些变量的值或者内容。原创 2024-08-01 11:07:19 · 591 阅读 · 0 评论 -
基于vs2022生成老版本的项目的cmake命令
该命令使用vs2022的cmd窗口生成2017项目。原创 2024-08-01 14:12:46 · 258 阅读 · 0 评论 -
cmake --preset使用 CMakePresets
cacheVariables中可以定义一些CMakelists.txt中的变量,可以理解成在cmake命令行加入-DQt5_ROOT=XXX(说明Qt5_ROOT变量的内容),也可以理解成cmakelists.txt中set命令;condition中则是判断指定版本或者更好版本的预设文件是否启用该预设,比如上述中的内容,type:equals则表示条件是比较两个字符串查看是否相等,lhs则是比较的第一个字符串,rhs则是第二字符串;strategy中是set表示用来设置,value则表示对应的值。原创 2024-08-02 11:58:17 · 785 阅读 · 0 评论 -
从项目开始学习CMake(3)
这个变量在整个构建过程中保持不变。第四行的输出结果in=1,这里的1同样是输入的test(1)的入参,这里可以发现第三行的set仿佛没有生效,但是其实不是,因为macro的机制导致在内部的变量需要用上$ {}去包含住才表示为入参,而这里的set的in算是一个全局变量,因此在最后一行的输出是in=2,虽然有点绕,但是这里的${in}中的in是之前set中的全局变量,不等于原来的入参(笑),原来的入参因为作用域问题已经结束了。第二行的输出结果in=1,这里的1是输入的test(1)的入参。原创 2024-08-02 19:46:56 · 289 阅读 · 0 评论