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.
Chciałbym wykonać następujące czynności: Jeśli CCache jest obecny w PATH, użyj „ccache g ++” do kompilacji, w przeciwnym razie użyj g ++. Spróbowałem napisać mały skrypt my-cmake zawierający CC="ccache gcc" CXX="ccache g++" cmake $* ale wygląda na to, że nie działa (uruchomiona make nadal nie używa ccache; sprawdziłem to używając …
Próbuję CTest w CMake, aby automatycznie uruchamiać niektóre z moich testów przy użyciu make testcelu. Problem polega na tym, że CMake nie „rozumie”, że test, który chcę uruchomić, musi zostać zbudowany, ponieważ jest częścią projektu. Dlatego szukam sposobu na jawne określenie tej zależności.
Oficjalny dokument CMake 2.8.12 mówi omacro Po wywołaniu polecenia zapisane w makrze są najpierw modyfikowane przez zastąpienie parametrów formalnych ($ {arg1}) przekazanymi argumentami, a następnie wywoływane jak zwykłe polecenia. i o function Po wywołaniu polecenia zapisane w funkcji są najpierw modyfikowane przez zastąpienie parametrów formalnych ($ {arg1}) przekazanymi argumentami, a …
Próbuję uruchomić program cmake hello world na Windows 7 x64 z Visual Studio 2010 i Cygwin, ale nie wydaje mi się, aby działał. Moja struktura katalogów jest następująca: HelloWorld -- CMakeLists.txt -- src/ -- -- CMakeLists.txt -- -- main.cpp -- build/ Robię a, cd builda po nim a cmake ..i …
Próbuję skonfigurować projekt za pomocą CMake, ale nie można znaleźć bibliotek Boost, mimo że znajdują się one w określonym folderze. Mam określony Boost_INCLUDE_DIR, Boost_LIBRARYDIRa BOOST_ROOT, ale nadal pojawia się błąd mówiący, że CUpewnij nie jest w stanie znaleźć motywację. Jaka może być przyczyna takiego błędu?
Chcę tylko debugować kod działający w systemie Linux i potrzebuję kompilacji debugowania ( -O0 -ggdb). Więc dodałem te rzeczy do mojego CMakeLists.txt: set(CMAKE_BUILD_TYPE DEBUG) set(CMAKE_C_FLAGS "-O0 -ggdb") set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb") set(CMAKE_C_FLAGS_RELEASE "-O0 -ggdb") set(CMAKE_CXX_FLAGS "-O0 -ggdb") set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb") set(CMAKE_CXX_FLAGS_RELEASE "-O0 -ggdb") Kiedy próbowałem skompilować, włączyłem tryb gadatliwy make VERBOSE=1 …
Rozglądając się po sieci, widziałem dużo kodu takiego: include(FindPkgConfig) pkg_search_module(SDL2 REQUIRED sdl2) target_include_directories(app SYSTEM PUBLIC ${SDL2_INCLUDE_DIRS} target_link_libraries(app ${SDL2_LIBRARIES}) Wydaje się jednak, że jest to niewłaściwy sposób robienia tego, ponieważ używa tylko katalogów dołączania i bibliotek, ale ignoruje definicje, ścieżki bibliotek i inne flagi, które mogą być zwracane przez pkg-config. Jaki …
Mój CMakeLists.txtzawiera tę linię: file(GLOB lib_srcs Half/half.cpp Iex/*.cpp IlmThread/*.cpp Imath/*.cpp IlmImf/*.cpp) a IlmImffolder zawiera b44ExpLogTable.cpp, które muszę wykluczyć z kompilacji. Jak to osiągnąć?
CMake oferuje wiele mechanizmów pobierania flag do kompilatora: CMAKE_<LANG>_FLAGS_<CONFIG> zmienne add_compile_options Komenda set_target_properties Komenda Czy jest jedna metoda, która jest preferowana w nowoczesnym zastosowaniu? Jeśli tak, dlaczego? Ponadto, w jaki sposób można używać tej metody w przypadku wielu systemów konfiguracyjnych, takich jak MSVC?
Mam mały projekt testowy , który używa OpenMP do równoległości. Moim celem jest skompilowanie go w taki sposób, aby tworzył .dlli .libdla bibliotek (ponieważ mój prawdziwy projekt łączy się z bibliotekami zewnętrznymi dystrybuowanymi przy użyciu tych typów), ze wsparciem dla OpenMP 4.5 lub nowszego i robię to z wiersza poleceń, …
Jestem w trakcie przepisywania starszej konfiguracji CMake, aby korzystać z nowoczesnych funkcji, takich jak automatyczne propagowanie zależności. (tj. używając rzeczy takich jak target_include_directories(<target> PUBLIC <dir>)zamiast include_directories(<dir>).) Obecnie ręcznie obsługujemy wszystkie informacje o zależnościach projektu, ustawiając kilka globalnych właściwości katalogu. Podczas moich testów znalazłem kilka przykładów, w których cel w nowej …
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.