2011-11-02 4 views
12

Używam CMake z C++ do budowania bibliotek i plików wykonywalnych i chciałbym użyć tego samego dla przejdź do języka programowania.Jak uzyskać CMake do pracy z językiem programowania go?

Jakie kroki należy podjąć, aby skonfigurować CMake, aby działał z językiem programowania go?

Zasadniczo mój kompilator ma 6g, co daje kompilację foo.6 - wysyłam go do łącznika za pośrednictwem 6l foo.6 i gotowe. Mam już skompilowany i zainstalowany kompilator i linker.

Oczywiście, mogę po prostu napisać prostą Makefile, ale byłoby miło używać CMake konsekwentnie przez cały mój projekt.

TIA za porady, które pomogłyby mi zacząć.

Odpowiedz

16

Może zaistnieć potrzeba wdrożenia obsługi CMake dla Go. Ogólnie rzecz biorąc to obejmuje następujące etapy:

  1. Tworzenie CMakeDetermineGoCompiler.cmake moduł, który będzie znaleźć Idź kompilatora dla obecnego systemu.
  2. Utwórz CMakeGoCompiler.cmake.in - szablon , który zostanie skonfigurowany przez CMakeDetermineGoCompiler.

  3. Tworzenie CMakeTestGoCompiler.cmake, moduł, który będzie skompilować prosty odchodzenie źródło, aby sprawdzić, czy kompilator działa.

  4. Tworzenie CMakeGoInformation.cmake, który będzie ustawić kilka związanych z języka zmienne (CMAKE_GO_LINK_EXECUTABLE i tak dalej)

Te rzeczy powinny być umieszczone w CMAKE_MODULES_DIR. Dla odniesienia możesz zobaczyć, w jaki sposób obsługa Java/CXX jest zaimplementowana.

Ewentualnie, jeśli nie chcesz mieszać z takimi wewnętrznymi rzeczami, możesz rozwiązać zadanie, tworząc makro(), które utworzy grupę niestandardowych celów/poleceń (zobacz add_custom_ {cel, polecenie}() dokumentacja).

+0

tyvm - będę musiał rzucić okiem! – kfmfe04

+1

Dziękuję bardzo! Szukałem tej prostej informacji przez dwa tygodnie i było to frustrujące, ponieważ w folderze Modules cmake jest tak wiele plików, a to zaczyna być mylące, jeśli chcesz zacząć od małego. W każdym razie dzięki! Niesamowita odpowiedź! –

+0

Wow! Szkoda, że ​​nie znalazłem tej odpowiedzi rok temu, kiedy zacząłem próbować to zrobić.Dobrze napisana odpowiedź :) – DavidZemon

6

Jest w twoim najlepszym interesie, aby nie używać CMake (ani żadnego innego systemu kompilacji).

Go ma prosty, wbudowany sposób budowania pakietów: go build (co również powoduje, że pracują go get i go install). go build, według projektu, nie wymaga dodatkowych narzędzi, takich jak make czy cmake.

Jeśli używasz CMake (lub dowolnego innego systemu kompilacji), po prostu utrudnisz sobie życie (jeśli planujesz korzystać z bibliotek opracowanych przez innych) lub dla innych osób (jeśli planujesz stworzyć biblioteki, które mają na celu być używane przez innych).

+3

Myślę, że wyjątek stanowi sytuacja, gdy używa się 'gccgo' i łączy pliki obiektów z istniejącymi projektami C, Fortran, Ada lub C++, które już używają CMake. – Alexander

+1

Budując pośrednie pliki, takie jak protobuffery, lub budując dystrybuowalne tarballe do wydania, lub w zasadzie bajillion, inne zadania, o których ludzie zapominają, istnieją dla ludzi piszących projekty, które są bardziej skomplikowane niż "go get". –