Programowanie w systemie UNIX/(auto)Make

Z Wikibooks, biblioteki wolnych podręczników.
Skocz do: nawigacja, szukaj

Narzędzia wspomagające/sterujące budowanie aplikacji/programu

Wersje:[1]


GNU Make[edytuj]

Jeśli w katalogu programu widzimy plik Makefile, to wystarczy wpisać w konsoli:

make


Pokazanie informacji o wersji programu make:

 make -v


GNU Make 4.1
Ten program został zbudowany dla systemu x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
Licencja GPLv3+: GNU GPL wersja 3 lub nowsza <http://gnu.org/licenses/gpl.html>
To oprogramowanie jest wolnodostępne: można je swobodnie zmieniać i rozpowszechniać.
Nie ma ŻADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.

składnia[edytuj]

 make [ -f makefile ] [ opcja ] ...  cel ...


Opcje[edytuj]

  • n = wypisuje komendy bez ich uruchomienia
  • p = drukuje reguły i wartości zmiennych
  • w = drukuje katalog przed i po make


 make -n

Cele[edytuj]

Plik Makefile powinien mieć przynajmniej 3 cele:[3]

  • all = zbudowanie całego programu, cel domyślny,
  • clean = czyszczenie kod po kompilacji
  • install = instalacja programu (po kompilacji)

Dobrym zwyczajem powinno być również dodanie celów

  • uninstall



Uruchamianie[edytuj]

Sprawdzamy co make będzie robił przy instalacji :

 make -n install

wartość zwracana[edytuj]

pomoc[edytuj]

offline[edytuj]

   man --locale=C 1 make

cmake[edytuj]

cmake = Cross-Platform Makefile Generator [4]


Minimalny plik CMakeLists.txt:[5]

cmake_minimum_required(VERSION 2.6.0)

# here we specify that the project is C language only, so the default
# C compiler on the system will be used
project(myprogram C)

add_executable(main main.c)

W katalogu programu mamy :

  • main.c = program żródłwy
  • CMakeLists.txt = plik reguł dla cmake

Uruchamiamy :

 cmake .

przykładowy wynik:

-- The C compiler identification is GNU 5.4.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/a/c/cmake

Teraz w katalogu progrmau mmay:

  • CMakeCache.txt
  • cmake_install.cmake
  • main.c
  • CMakeFiles
  • CMakeLists.txt
  • Makefile ( 178 linii !!)


Uruchamiamy make :

Scanning dependencies of target main
[ 50%] Building C object CMakeFiles/main.dir/main.c.o
[100%] Linking C executable main
[100%] Built target main


i mamy skompilowany program main. możemy go uruchomić :

./main
Hello World!

configure[edytuj]

Jeśli w katalogu programu widzimy plik ( skrypt) configure to:

./configure
 make 
 make install

Configure tworzy plik Makefile dla progrmau make.


imake[edytuj]

Instalacja w Ubuntu:

 sudo apt install xutils-dev


Sprawdzamy[6] :

touch Imakefile
xmkmf

w katalogu mamy 2 pliki:

  • Imakefile ( pusty)
  • Makefile ( 1000 linii) utworzony na podstawie Imake.tmpl i Imakefile przez imake ( xmkf =

Teraz możemy uruchomić make.

Wersje :

  • make Makefile
  • xmkmf = skrypt powłoki Bourne używany do wywołania imake
  • imboot

Automake i Autotools (GNU build system)[edytuj]

GNU Autoconf - zestaw makr M4 stworzonych w ramach projektu GNU, które służą do generowania skryptów powłoki mających zająć się procesem kompilacji programów komputerowych rozprowadzanych w formie kodu źródłowego. Autoconf jest w stanie dostosować się do specyfiki wielu systemów operacyjnych bez angażowania użytkownika.

Autoconf-automake proces


Pliki zależne od programu:

  • configure
    • wejście: Makefile.in
    • wyjście: Makefile
  • autoconfig
    • wejście: configure.ac ( wcześniej configure.in)
    • wyjście: configure


Etapy:[7]

  • autoheader # creates config.h.in
  • touch NEWS README AUTHORS ChangeLog
  • touch stamp-h
  • aclocal # adds aclocal.m4 to directory. Defines some m4 macros used by the auto tools.
  • autoconf #- creates configure from configure.ac
  • automake # Creates Makefile.in from Makefile.am
  • ./configure # - creates Makefile from Makefile.in
  • make


Czasem jest skrypt autogen.sh który uruchamia te etapy

Ubuntu-make[edytuj]

sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt update
sudo apt install ubuntu-make


Zobacz również[edytuj]

Źródła[edytuj]

  1. Arkadiusz Ćwiek krotkie-wprowadzenie-do-gnu-make-czyli-jak-pisac-poprawne-makefile
  2. cmake tutorial
  3. GNU make - Grzegorz J. Nalepa 2007-10-22
  4. http://stackoverflow.com/questions/18966342/how-to-compile-a-c-program-that-includes-a-header-from-another-library
  5. stackoverflow question : how-compile-only-c-with-cmake
  6. linuxjournal : Building Projects With Imake Issue 48 From April 01, 1998 By Otto Hammersmit
  7. openismus automake