CMake如何配置C源文件对.incbin嵌入的JS资源的编译依赖
解决方案
直接使用CMake的set_source_files_properties命令为目标C源文件添加OBJECT_DEPENDS属性即可,具体用法如下:
单个依赖文件配置
如果只需要绑定单个some_file.js依赖,在CMakeLists.txt中添加如下配置:
set_source_files_properties(source.c PROPERTIES OBJECT_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/some_file.js" )
注意用CMAKE_CURRENT_SOURCE_DIR拼接绝对路径,避免相对路径产生的歧义。
多个依赖文件批量配置
如果你有大量JS资源需要批量绑定,可以先收集所有资源路径再统一配置:
# 批量收集指定目录下的所有JS资源文件 file(GLOB_RECURSE JS_ASSETS "${CMAKE_CURRENT_SOURCE_DIR}/static/*.js" ) # 给嵌入资源的C文件绑定所有JS资源依赖 set_source_files_properties(source.c PROPERTIES OBJECT_DEPENDS "${JS_ASSETS}" )
配置效果
该属性会明确告知CMake:source.c编译生成的目标文件完全依赖于配置的JS资源,只要任意一个绑定的JS文件发生修改、时间戳更新,就会自动触发source.c的重新编译,不会牵连到其他无关的源文件,完全匹配你使用.incbin嵌入资源的场景需求。
内容的提问来源于stack exchange,提问作者gonzo
相关产品推荐
相关产品推荐

