CMake AMRCC + benutzerdefinierte Linker

Ich versuche, @ zu verwendcmake in einem Projekt, das mit @ kompiliert wurarmcc, aber einen benutzerdefinierten proprietären Linker verwenden (nichtarmlink).

Ich habe die Variablen im @ geändetoolchain.cmake Datei wie folgt:

unset (CMAKE_LINKER CACHE)
set (CMAKE_LINKER "my_linker" CACHE STRING "" FORCE)

unset (CMAKE_ARMCC_LINKER CACHE)
set (CMAKE_ARMCC_LINKER "my_linker" CACHE STRING "" FORCE)

unset (CMAKE_EXE_LINKER_FLAGS CACHE )
set (CMAKE_EXE_LINKER_FLAGS "-flag1 -flag2" CACHE STRING "" FORCE)

unset (CMAKE_C_LINK_EXECUTABLE)
set (CMAKE_C_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_EXE_LINKER_FLAGS> <OBJECTS> <LINK_LIBRARIES> -o <TARGET>")

unset (CMAKE_CXX_LINK_EXECUTABLE)
set (CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_LINKER> <CMAKE_EXE_LINKER_FLAGS> <OBJECTS> <LINK_LIBRARIES> -o <TARGET>")

Aber wenncmake versucht, meine Compiler-Suite zu überprüfen. Der Verknüpfungsschritt schlägt fehl:

-- Check for working C compiler: armcc.exe -- broken
CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.6/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "armcc.exe" is not able to compile a simple test program.

... (compiling commands that worked hidden here)

Linking C executable cmTC_c08ef.elf

"C:\Program Files (x86)\CMake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_c08ef.dir\link.txt --verbose=1

my_linker -flag1 -flag2 CMakeFiles/cmTC_c08ef.dir/testCCompiler.o -o cmTC_c08ef.elf --list cmTC_c08ef.map

Das Problem ist das--list cmTC_c08ef.map am Ende der Kommandozeile (die im @ nicht vorhanden itoolchain.cmake Datei)

Damit es funktioniert, muss ich die Datei ändern<cmake_install_dir>\Modules\Compiler\ARMCC.cmake wie folgt

  set(CMAKE_${lang}_LINK_EXECUTABLE      "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET> --list <TARGET_BASE>.map")
#  set(CMAKE_${lang}_LINK_EXECUTABLE      "<CMAKE_LINKER> <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS> -o <TARGET>")

Es gibt einen besseren Ansatz, um dieses Problem zu lösen, oder ist dies der einzige Weg?

Bearbeiten: Anscheinend ist dies ein Fehler in der Armcc-Unterstützung von cmake, daher behalte ich meine Änderung in der Datei ARMCC.cmake bei.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage