2010-03-13 16 views
10

gcc 4.4.2/Visual Studio C++ 2008cmake i wizualne studio

Używam cmake na Linux, bez żadnych problemów.

Teraz został przeniesiony przez aplikację do uruchamiania w systemie Windows.

I generowane pliki rozwiązanie wykorzystujące cmake -G „Visual Studio 9 2008 ../src”

Wiem jednak, że CUpewnij tworzy tylko Makefile, który jest używany przez kompilator do budowania aplikacji.

Otwieram swoje rozwiązanie w Visual Studio, naciskam klawisz F7, aby skompilować.

Zastanawiam się, czy faktycznie używa pliku Makefile, który został wygenerowany przez cmake? Lub po prostu kompilowanie aplikacji jak każdy normalny program studyjny?

Wielkie dzięki za wszelkie rady,

Odpowiedz

18

Cmake generuje plik Visual Studio Solution i Project.

Rozwiązanie zawiera co najmniej trzy projekty:

  • ALL_BUILD
  • YourProject
  • ZERO_CHECK

Rozwiązaniem jest skonfigurowany tak, że podczas budowania projektu (roztworem kompilacji lub zbuduj projekt) "YourProject" zostanie zbudowany, a następnie ZERO_CHECK zostanie zbudowany, powodując uruchomienie programu cmake i sprawdzenie, czy coś się zmieniło. Jeśli coś się zmieniło, rozwiązanie i plik projektu zostaną zregenerowane, a Visual Studio zapyta, czy chcesz przeładować.

Kompilację programu wykonuje program Visual Studio, tak jak w przypadku ręcznego konfigurowania, ale program Visual Studio uruchomi program cmake, a tym samym sprawdzi, czy coś się zmieniło, a pliki projektu powinny zostać zregenerowane.

+0

Jest to zasadniczo poprawne, ale projekt ZERO_CHECK zostanie zbudowany przed każdym innym projektem Visual Studio. Każdy projekt generowany przez CMake ma zależność ZERO_CHECK od bezpośredniej zależności od projektu, z wyjątkiem projektu INSTALL CMake, który ma tylko zależność od ALL_BUILD (co z kolei ma zależność od ZERO_CHECK ...) – Manuzor

10

CUpewnij generuje „prawdziwy” .vcproj plików, więc Visual Studio będzie budować swój projekt jak każdy normalny projektu Visual Studio. W programie nie ma plików Makefile.

+0

Częścią, którą interesuję się, jest CMakeList.txt. Czy kompilator robi cokolwiek z tym. Przyczyną, o którą pytałem, było edytowanie pliku CMakelists.txt. Wystąpił błąd łącza, ponieważ nie dodałem nazwy biblioteki "ws2_32., Tj. TARGET_LINK_LIBRARIES (clt client ws2_32). W jaki sposób kompilator korzysta z CMakeLists.txt? Thanks. – ant2009

+3

CMake tworzy dla ciebie pliki * .vcproj na podstawie informacji z pliku CMakeLists.txt Polecenie TARGET_LINK_LIBRARIES mówi CMake, aby wstawił niezbędne dyrektywy do plików * .vcproj, aby kompilator Visual Studio połączył się z odpowiednimi bibliotekami. – JesperE

Powiązane problemy