您好!
我们使用 cmake 和 ti-cgt-arm 编译器为工程设置编译环境。 链接器或归档 器选项将非常长、因为要链接或归档的目标文件太多。 这将超出系统的命令行限制并导致链接或存档失败。 Cmake 可以通过使用 类似这样的响应文件来处理此问题、
设置(CMAKE_C_USE_RESPONSE_FILE_TO_ARTESS_TRUE)
设置(CMAKE_CXX_USE_RESPONSE_FILE_TO_ARTS true)
因此、如果使用 TI 编译器、cmake 将执行以下操作、
cmake 生成的默认命令行如下所示、
armar.exe qr library.a
armcl.exe --run_linker --output_file=name.out --map_file=name.map
使用 响应文件后、命令行将与此类似
armar.exe qr library.a --cmd_file=object.rsp
armcl.exe --run_linker --output_file=name.out --map_file=name.map --cmd_file=object.rsp
问题是 --cmd_file 选项 无法 在 上述命令中工作。 因此 、--cmd_file 基本上是无用的、因为只有对象或库具有非常长的字符、需要将其放入文件中。
下面是 cmake 安装目录中 TI CGT ARM 编译器的 cmake 代码片段
设置(CMAKE_${lang}_archive_create " QR ")
设置(CMAKE_${lang}_archive_append " 质量保证 ")
设置(CMAKE_${lang}_archive_finish "")
#在--run_linker 标志之后、不可能有响应文件
set (CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG ") #如果 TI 编译器支持、则应为"-cmd_file="
设置(CMAKE_${lang}_use_response _file_for_libraries 0)
设置(CMAKE_${lang}_use_response _file_for_objects 0)
设置(CMAKE_${lang}_link_executable " --run_linker --output_file= --map_file= 映射 ")