Forum: Compiler & IDEs CMake CMAKE_C_FLAGS vs add_compile_options


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von D a v i d K. (oekel) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hi,

kann mir Jeman erklären, wieso ich bei folgendem:
1
    SET(CMAKE_C_COMPILER ${AVRBIN}/avr-gcc)
2
    SET(CMAKE_CXX_COMPILER ${AVRBIN}/avr-g++)
3
4
    #Binaryinterface (ABI)
5
        #-funsigned-char
6
        #-funsigned-bitfields
7
        #-fpack-struct
8
        #-fshort-enums
9
    add_compile_options(-funsigned-char) # CMake 2.8.12 or newer
10
    add_compile_options(-fshort-enums)
11
    add_compile_options(-ffunction-sections)
12
    add_compile_options(-fdata-sections)
13
14
    add_compile_options(-Wall)#all Warnings
15
    add_compile_options(-std=gnu99)
16
17
    SET(COMMON_FLAGS -Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -Wl,--gc-sections)
18
    #add_compile_options(${COMMON_FLAGS}) #(__AVR_ATmega??__)
19
    #add_link_options(${COMMON_FLAGS})
20
21
    SET(CMAKE_C_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -std=gnu99 -Wl,--gc-sections")
22
    SET(CMAKE_CXX_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -Wl,--gc-sections")
auf ein Compilat von:

Device: atmega88
Program:    7830 bytes (95.6% Full)
(.text + .data + .bootloader)
Data:         85 bytes (8.3% Full)
(.data + .bss + .noinit)
EEPROM:        6 bytes (1.2% Full)
(.eeprom)

und hingegen bei:
1
    SET(CMAKE_C_COMPILER ${AVRBIN}/avr-gcc)
2
    SET(CMAKE_CXX_COMPILER ${AVRBIN}/avr-g++)
3
4
    #Binaryinterface (ABI)
5
        #-funsigned-char
6
        #-funsigned-bitfields
7
        #-fpack-struct
8
        #-fshort-enums
9
    add_compile_options(-funsigned-char) # CMake 2.8.12 or newer
10
    add_compile_options(-fshort-enums)
11
    add_compile_options(-ffunction-sections)
12
    add_compile_options(-fdata-sections)
13
14
    add_compile_options(-Wall)#all Warnings
15
    add_compile_options(-std=gnu99)
16
17
    SET(COMMON_FLAGS -Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -Wl,--gc-sections)
18
    add_compile_options(${COMMON_FLAGS}) #(__AVR_ATmega??__)
19
    add_link_options(${COMMON_FLAGS})
20
21
    #SET(CMAKE_C_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -std=gnu99 -Wl,--gc-sections")
22
    #SET(CMAKE_CXX_FLAGS "-Os -mmcu=${DEVICE} -DF_CPU=${FREQ}UL -Wl,--gc-sections")

auf:
Device: atmega88
Program:    5382 bytes (65.7% Full)
(.text + .data + .bootloader)
Data:         85 bytes (8.3% Full)
(.data + .bss + .noinit)
EEPROM:        6 bytes (1.2% Full)
(.eeprom)

Meines Verständnisses nach haben ich nur andere Befehle verwendet, um 
die Optionen hinzuzufügen. Das Resultät lässt mich aber glauben, dass 
bei einem von beiden etwas anders greift.

Viele Grüße

PS: die letzten vier Zeilen sind mit Kommetaren "getoggelt"

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
2 lesenswert
nicht lesenswert
Vielleicht lässt du dir ja mal die entsprechenden 
Compiler-Kommandozeilen anzeigen, die sich daraus ergeben?

Beitrag #5770938 wurde vom Autor gelöscht.
von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Vielleicht lässt du dir ja mal die entsprechenden Compiler-Kommandozeilen
> anzeigen, die sich daraus ergeben?

Das geht übrigens am einfachsten mit:
1
make VERBOSE=1

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.