是否可自定义供QMake调用的C++宏并自动传递源文件列表至pro文件
QMake自定义宏及源文件自动配置说明
自定义宏的使用与存储
QMake完全支持用户自定义宏/变量,用法和内置的DEFINES变量一致,根据使用场景有两种存储方式:
- 仅当前项目使用:直接在
*.pro文件中声明即可,例如MY_SOURCES += test.cpp,后续通过$$MY_SOURCES就能调用取值。如果需要拆分配置,也可以单独写在*.pri文件中,在pro文件里通过include(xxx.pri)引入即可生效。 - 多项目全局复用:可以将公共宏定义存放在项目根目录的
.qmake.conf文件中,当前目录树下的所有QMake项目都会自动加载这些宏。
自动传递源文件列表到SOURCES的实现
针对你需要自动更新源文件列表、同步到Makefile的需求,有两种常用方案:
方案1:自动扫描目录源文件
无需手动维护文件列表,用QMake内置的文件扫描函数自动匹配指定路径的源文件:
# 匹配当前目录下所有.cpp文件 SOURCES += *.cpp # 递归匹配src目录下所有.cpp文件,第二个参数true表示开启递归 SOURCES += $$files(src/*.cpp, true)
方案2:自定义宏统一管理源文件列表
如果需要显式控制纳入编译的文件,可以用自定义宏单独维护列表,后续更新不需要修改主pro文件:
- 新建公共配置文件
source_config.pri,在里面定义源文件列表宏:
MY_PROJECT_SOURCES += \ main.cpp \ mainwindow.cpp \ utils/fileio.cpp \ module/network.cpp
- 在主pro文件中引入配置并赋值给SOURCES:
include(source_config.pri) SOURCES += $$MY_PROJECT_SOURCES
如果你的源文件列表是外部工具生成的,可以直接让脚本自动更新
source_config.pri里的MY_PROJECT_SOURCES内容,QMake运行时会自动读取最新列表生成Makefile,不需要手动修改pro文件。
内容的提问来源于stack exchange,提问作者Digger
相关产品推荐
相关产品推荐

