CMake to wieloplatformowy generator systemów kompilacji typu open source. Generuje pliki dla systemów kompilacji, takich jak natywne pliki makefile, pliki kompilacji ninja i pliki projektów dla kilku zintegrowanych środowisk programistycznych.
Ogólnie jestem nowy w programowaniu, więc zdecydowałem, że zacznę od stworzenia prostej klasy wektorowej w C ++. Jednak od samego początku chciałbym wypracować dobre nawyki, zamiast próbować później modyfikować mój przepływ pracy. Obecnie mam tylko dwa pliki vector3.hppi vector3.cpp. Ten projekt będzie się powoli rozwijał (czyniąc go bardziej ogólną biblioteką …
Mój system operacyjny to centos, który ma domyślną ścieżkę gcc /usr/bin/gcc. Ale jest stara, potrzebuję nowej wersji gcc. Więc instaluję nową wersję w nowej ścieżce /usr/local/bin/gcc. Ale kiedy uruchamiam cmake, nadal używa starej wersji ścieżki gcc ( /usr/bin/gcc). Jak mogę określić gcc do nowej ścieżki ( /usr/local/bin/gcc). Próbowałem nadpisać /usr/bin/gccz …
Znalazłem co najmniej 3 sposoby, aby to zrobić i zastanawiam się, który jest idiomatyczny. Należy to zrobić prawie zawsze dla każdej biblioteki statycznej. Dziwię się, że generator Makefile w CMake nie dodaje tego automatycznie do bibliotek statycznych. (chyba że czegoś mi brakuje?) target_compile_options(myLib PRIVATE -fPIC) add_compile_options(-fPIC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic") set(CMAKE_CXX_FLAGS …
Próbuję zainstalować oprogramowanie, które używa cmake do zainstalowania się, kiedy podam w commandlin cmake .. daje mi następujący błąd w tym pliku, CMakeLists.txt -------- linia ---> find_package ( WYMAGANY OpenSSL): - cmake .. -- Could NOT find Git (missing: GIT_EXECUTABLE) ZLib include dirs: /usr/include ZLib libraries: /usr/lib/arm-linux-gnueabihf/libz.so Compiling with SSL …
Po zainstalowaniu programu Visual Studio 2015 i uruchomieniu CMake w poprzednim projekcie CMake wystąpił błąd informujący, że nie mógł znaleźć kompilatora C. The C compiler identification is unknown The CXX compiler identification is unknown CMake Error at CMakeLists.txt:4 (PROJECT): No CMAKE_C_COMPILER could be found. CMake Error at CMakeLists.txt:4 (PROJECT): No …
Zastanawiałem się, czy istnieje przykładowy kod dla Makefiles ( make) i CMakeLists.txt( cmake), które robią to samo (jedyną różnicą jest to, że jeden jest zapisany, makea drugi cmake). Próbowałem poszukać „cmake vs make”, ale nigdy nie znalazłem żadnych porównań kodu. Zrozumienie różnic byłoby naprawdę pomocne, nawet w prostym przypadku.
W jakiś sposób jestem całkowicie zdezorientowany tym, jak działa CMake. Za każdym razem, gdy myślę, że zbliżam się do zrozumienia, jak powinno być napisane CMake, znika to w następnym przeczytanym przykładzie. Chcę tylko wiedzieć, jak powinienem ustrukturyzować mój projekt, aby mój CMake wymagał jak najmniejszej konserwacji w przyszłości. Na przykład …
Jak ustawić poziom ostrzegania dla projektu (a nie całego rozwiązania) za pomocą CMake ? Powinien działać na Visual Studio i GCC . Znalazłem różne opcje, ale większość z nich nie działa lub nie jest zgodna z dokumentacją.
Jestem całkiem nowy w CMake i przeczytałem kilka samouczków o tym, jak go używać, i napisałem kilka skomplikowanych 50 linii skryptu CMake, aby stworzyć program dla 3 różnych kompilatorów. To prawdopodobnie kończy całą moją wiedzę o CMake. Teraz mój problem polega na tym, że mam kod źródłowy, którego folderu nie …
Mam projekt A, który eksportuje bibliotekę statyczną jako cel: install(TARGETS alib DESTINATION lib EXPORT project_a-targets) install(EXPORT project_a-targets DESTINATION lib/alib) Teraz chcę użyć projektu A jako projektu zewnętrznego z projektu B i uwzględnić jego wbudowane cele: ExternalProject_Add(project_a URL ...project_a.tar.gz PREFIX ${CMAKE_CURRENT_BINARY_DIR}/project_a CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> ) include(${CMAKE_CURRENT_BINARY_DIR}/lib/project_a/project_a-targets.cmake) Problem polega na tym, że plik …
Buduję dużą bibliotekę za pomocą CMake i chciałbym, aby użytkownicy mogli selektywnie włączać / wyłączać niektóre części mojego procesu kompilacji. Jak mogę dodać opcje wiersza poleceń do mojej kompilacji CMake, np. Aby użytkownicy mogli wpisać coś podobnego cmake --build-partone --nobuild-parttwo --dothis=true --dothat=false ..? Wygląda na to, że słowo kluczowe OPTION …
Chciałbym użyć globalnego zestawu flag do kompilacji projektu, co oznacza, że w moim pliku CMakeLists.txt najwyższego poziomu określiłem: ADD_DEFINITIONS ( -Wall -Weffc++ -pedantic -std=c++0x ) Jednak dla określonego pliku (powiedzmy "foo.cpp") w podkatalogu, chcę przełączyć flagi kompilacji, aby nie stosować -Weffc ++ (dołączona biblioteka komercyjna, której nie mogę zmienić). Aby …
Jak powinien wyglądać mój plik CMake do łączenia mojego programu z biblioteką Boost w systemie Ubuntu? Błędy wyświetlane podczas uruchamiania make: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' Główny plik jest naprawdę prosty: #include <boost/program_options/options_description.hpp> #include <boost/program_options/option.hpp> using namespace std; #include <iostream> namespace po = boost::program_options; int main(int argc, char** argv) { …
Używam CMake do tworzenia mojego projektu. Dodałem plik binarny testu jednostkowego, który korzysta z platformy testów jednostkowych Boost. Ten plik binarny zawiera wszystkie testy jednostkowe. Dodałem ten plik binarny do uruchomienia przez CTest: ADD_EXECUTABLE( tftest test-main.cpp ) ENABLE_TESTING() ADD_TEST( UnitTests tftest) Ale dane wyjściowe kompilacji w programie Visual Studio pokazują …
Jestem początkującym w CMAKE. Poniżej znajduje się prosty plik cmake, który dobrze działa w oknach środowiska mingw. Problem jest wyraźnie ztarget_link_libraries() funkcji CMAKE, w której łączę libwsock32.a. W oknach to działa i otrzymuję wyniki. Jednak, zgodnie z oczekiwaniami, w Linuksie /usr/bin/ldbędzie szukać tego, -lwsock32czego NIE ma w systemie operacyjnym Linux. …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.