Huvuden och länkning

Även om vi visat kompileringskommandot för det enkla exemplet så bör du verkligen använda byggsystemet Meson. Exemplen som används i denna bok inkluderas i paketet gtkmm-documentation med lämpliga byggfiler, så vi kommer inte visa byggkommandona framöver. Filen README i gtkmm-documentation beskriver hur du bygger exemplen.

För att förenkla kompilering använder vi pkg-config som finns i alla (riktigt installerade) gtkmm-installationer. Det här programmet ”vet” vilka kompilatorflaggor som behövs för att kompilera program som använder gtkmm. Flaggan --cflags får pkg-config att mata ut en lista över inkluderingskataloger som kompilatorn ska titta i; flaggan --libs begär listan över bibliotek som kompilatorn ska länka med och katalogerna att hitta dem i. Försök köra den från din skalprompt för att se resultatet på ditt system.

Detta är dock ännu lättare om du använder funktionen dependency() i en meson.build-fil med Meson. Till exempel:

gtkmm_dep = dependency('gtkmm-4.0', version: '>= 4.6.0')

Detta kontrollerar närvaron av gtkmm och definierar gtkmm_dep för användning i dina meson.build-filer. Till exempel:

exe_file = executable('my_program', 'my_source1.cc', 'my_source2.cc',
  dependencies: gtkmm_dep,
  win_subsystem: 'windows',
)

gtkmm-4.0 är namnet på det aktuella stabila API:t. Det finns äldre API:er som heter gtkmm-2.4 och gtkmm-3.0 vilka installeras parallellt då de finns tillgängliga. Det finns flera versioner av gtkmm-2.4, som gtkmm 2.10, och det finns flera versioner av gtkmm-3.0-API:t. Observera att API-namnet inte ändras för varje version då det skulle vara ett inkompatibelt API- och ABI-brott. Det kan komma ett framtida gtkmm-5.0-API som då skulle gå installera parallellt med gtkmm-4.0 utan att påverka befintliga program.

Om du börjar genom att experimentera med ett litet program som du bara tänker använda själv är det lättare att börja med en meson.build liknande meson.build-filerna i kapitlet Bygga program.

Se även GNU:s webbplats om du använder det äldre Autotools-byggsystemet. Den har mer information om autoconf och automake. Det finns också några böcker som beskriver Autotools: ”GNU Autoconf, Automake, and Libtool” av Gary Vaughan med flera, och ”Autotools, A Practitioner's Guide to GNU Autoconf, Automake, and Libtool” av John Calcote.