根据我对cmake的理解,该工具负责管理文件路径和命令行长度,以避免达到8191个字符的窗口限制。Cmake命令行太长windows
但是我在Windows上用arm_none_eabi进行交叉编译,cmake不会使用响应文件或任何其他解决方法来生成makefile以获取路径长度。因此链接步骤失败。
这里是引起问题
XXXXX_EXTERNAL_OBJECTS =
XXXX_OBJECTS = \
"file1.c.obj" \
"file2.c.obj" \
"file3.c.obj" \
"fileXX.c.obj" \
C:/YYYY/GNU_Tools_ARM_Embedded/6-2016-q4-major/bin/arm-none-eabi-gcc.exe -mcpu=cortex-m4 -mthumb -DSTM32L4__xx -mfloat-abi=softfp -DXXXX -O0 -g -Wfatal-errors -Wall -Wno-unused-function -std=c99 -fdata-sections -ffunction-sections -mcpu=cortex-m4 -march=armv7e-m -O0 -g --specs=nano.specs -mthumb -Wl,--gc-sections -nostartfiles -Wl,[email protected] -TC:SSSSSSSSS/STM32L4__RGTx_FLASH.ld $(XXXX_OBJECTS) $(XXXXX_EXTERNAL_OBJECTS) -o outHexFile_XXXX -LC:/YYYYYYYYYYYYYYYY/arm-nano-eabi/lib
最后一行长度为约23000个字符(远超过8191)所生成的生成文件线。
为什么Cmake没有生成可用于Windows的生成文件? 这只是因为我在交叉编译? 我能做些什么来避免这个问题?
EDIT
发生器是GNU生成文件
CMake的版本3.7.2
编辑2
这可能在将来的版本被自动处理
我有同样的proble m和我有一个解决方案,它依赖于makefile生成器,例如忍者你正在使用和CMake版本。您能否将这些信息添加到您的问题中? – Florian
@florian OK Cmake的GNU makefile 3.7.2 – Julien