CMAKE separater Linker und Compiler-Flags

Recht jetzt mein toolchain.cmake sieht loke dies:

CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU)
CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-gcc GNU)
SET(CMAKE_ASM_COMPILER arm-none-eabi-as)
SET(CMAKE_OBJCOPY arm-none-eabi-objcopy CACHE INTERNAL "objcopy" FORCE)
SET(CMAKE_OBJDUMP arm-none-eabi-objdump CACHE INTERNAL "objdump" FORCE)

# Compiler Flags 
SET(MCU_FLAGS "-mcpu=cortex-m3 -mthumb")
SET(CMAKE_BUILD_FLAGS "-O2 -g -mfpu=vfp -mfloat-abi=soft -Wa,-meabi=5 -ffunction-sections -fno-common -pedantic -Wall -Wextra -Wno-missing-field-initializers")
SET(CMAKE_C_FLAGS "${MCU_FLAGS} ${CMAKE_BUILD_FLAGS}"  CACHE INTERNAL "c compiler flags")
SET(CMAKE_CXX_FLAGS ${CMAKE_C_FLAGS} CACHE INTERNAL "cxx compiler flags")
SET(CMAKE_ASM_FLAGS "-g -mcpu=cortex-m3 -mthumb -mfpu=vfp -mfloat-abi=soft -meabi=5 -warn" CACHE INTERNAL "asm compiler flags")

SET(CMAKE_EXE_LINKER_FLAGS "-mcpu=cortex-m3 -mthumb -Wall -Wextra -Wno-missing-field-initializers -g -nostartfiles -Wl,-T1.ld,-M=1.map,--gc-sections" CACHE INTERNAL "exe link flags")

Das problem ist, dass CMake geht der Linker zusätzlich die Compiler-flags! Gibt es eine Möglichkeit, zu trennen, diese beiden?

Etwas anderes ist, wenn ich eine andere compiler-tool-chain (Wie Fujitsu Softtune) wie kann ich feststellen, CMake explizit zu nehmen, ein Linker und nicht der compiler Objekte Verknüpfen?

Dank


Damit ich endlich gelöst. für evryone anderen mit dem gleichen problem, habe ich geändert CMakelists wie folgt:

add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C CXX ASM)
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES  LINK_FLAGS "${LD_FLAGS_STR} -m ${PROJECT_NAME}.map")
set(CMAKE_C_LINK_EXECUTABLE "FLNK907S.EXE  -o <TARGET> <LINK_FLAGS> <OBJECTS>")

und es funktioniert einwandfrei...

wo ${LD_FLAGS_STR} ist nur die Liste der mein linker flags (eigene variable). und LNK907S.EXE ist der name von Linker-ich 'm mit (Fujitsu).

  • Hier die Antwort scheint zu erfordern, Projekt-spezifischen Einstellungen. Ich habe die gleiche Frage, und würde lieber nicht haben, wiederholen Sie diese Einstellungen auf jede der Dutzend Bibliotheken und binaries, die ich versuche zu bauen.
  • Hallo, ich von Ihnen positiv bewertet werden. Ich Stand vor dem gleichen problem. Die einzige Frage die ich habe ist, Sie müssen Projekt-spezifische Einstellungen. Es wäre toll, wenn du posten könntest, was die ${LD_FLAGS_STR} sind, und was das <TARGET><LINK_FLAGS><OBJEKTE> sind. Da möchte ich auch reduzieren /löschen der noch nicht genutzte Teil von meinem code
InformationsquelleAutor arash javan | 2013-05-16
Schreibe einen Kommentar