Skip to content

Commit d0280ec

Browse files
authored
Merge pull request #13427 from 0xc0170/fix_cmake_response_files
CMake: Use response files as an alternative to placing all the compile/link options on the command line This is especially useful on Windows where there is a shorter limit on command line character length.
2 parents ece8747 + 6ae34a6 commit d0280ec

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# This is the boilerplate for Mbed OS
55

6-
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)
6+
cmake_minimum_required(VERSION 3.18.2 FATAL_ERROR)
77

88
# Using relative paths behavior
99
if(POLICY CMP0076)

cmake/toolchain.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,22 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
7676
set(CMAKE_ASM_FLAGS_DEBUG "" CACHE STRING "" FORCE)
7777
set(CMAKE_ASM_FLAGS_RELEASE "" CACHE STRING "" FORCE)
7878
set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "" CACHE STRING "" FORCE)
79+
80+
# Use response files always
81+
set(CMAKE_ASM_USE_RESPONSE_FILE_FOR_INCLUDES 1)
82+
set(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES 1)
83+
set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES 1)
84+
85+
set(CMAKE_ASM_USE_RESPONSE_FILE_FOR_OBJECTS 1)
86+
set(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
87+
set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS 1)
88+
89+
set(CMAKE_ASM_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
90+
set(CMAKE_C_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
91+
set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
92+
93+
# Ninja requires to be forced for response files
94+
if ("${CMAKE_GENERATOR}" MATCHES "Ninja")
95+
set(CMAKE_NINJA_FORCE_RESPONSE_FILE 1 CACHE INTERNAL "")
96+
endif()
97+

0 commit comments

Comments
 (0)