【发布时间】:2017-08-28 07:08:08
【问题描述】:
根据我对 cmake 的理解,该工具会处理文件路径和命令行长度,以避免达到 Windows 8191 个字符的限制。
但是,我在 windows 上使用 arm_none_eabi 进行交叉编译,并且 cmake 不会使用响应文件或任何其他解决路径长度的方法生成 makefile。因此链接步骤失败。
这是导致问题的生成的 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,-Map=$@.map -TC:SSSSSSSSS/STM32L4__RGTx_FLASH.ld $(XXXX_OBJECTS) $(XXXXX_EXTERNAL_OBJECTS) -o outHexFile_XXXX -LC:/YYYYYYYYYYYYYYYY/arm-nano-eabi/lib
最后的行长约为 23000 个字符(远超过 8191 个)。
为什么 Cmake 不生成可供 windows 使用的 makefile ? 这仅仅是因为我在交叉编译吗? 我能做些什么来避免这个问题?
编辑
生成器是 GNU Makefiles
CMake 版本 3.7.2
编辑 2
这可能会在未来的版本中自动处理
【问题讨论】:
-
我遇到了同样的问题,我有一个取决于 makefile 生成器的解决方案,例如您正在使用的 Ninja 和 CMake 版本。您能否将此信息添加到您的问题中?
-
@florian OK GNU makefile 与 Cmake 3.7.2