Podczas gdy łatwo jest znaleźć informacje na temat poziomu powierzchni na temat używania CMake, informacja, jak właściwie używać CMake wydaje się być bardzo trudna do znalezienia. Jak w przypadku przyzwoitego projektu CMake (jeden plik wykonywalny, jedna lub więcej statycznych bibliotek używanych przez ten plik wykonywalny, jedna lub więcej zewnętrznych zależności używanych przez biblioteki statyczne) należy zamówić foldery i pliki CMakeList.txt? Jakie pliki CMakeList.txt powinny mieć jakie polecenia?Jak poprawnie skonfigurować projekt CMake?
Odpowiedz
dobrym sposobem, aby dowiedzieć się, jak używać CMake skutecznie to patrząc na innych projektach. LLVM i jego podprojekty są dobrym przykładem.
Ogólnie dobre praktyki kodowania zamieniają się w dobre praktyki CMake; chcesz modułowość, jasny styl i elastyczność.
Przykładem może być posiadanie reguł do budowania pliku wykonywalnego w katalogu src
, a następnie użycie tego celu w głównym folderze projektu. Coś takiego:
-my_proj
|
----CMakeLists.txt //contains directives for top-level dependencies and linking, includes subfolders
----src
|
----CMakeLists.txt //contains definition of your main executable target
----internal_lib
|
----CMakeLists.txt //contains definition of your internal static libraries
my_proj/CMakeLists.txt
add_subdirectory(src)
find_package (Threads REQUIRED) #find pthreads package
target_link_libraries (my_exe my_lib ${CMAKE_THREAD_LIBS_INIT}) #link against pthreads and my_lib
my_proj/src/CMakeLists.txt
add_subdirectory(internal_lib)
add_executable(my_exe my_source1.cpp mysource2.cpp)
my_proj/src/internal_lib/CMakeLists.txt
add_library(my_lib my_lib_source1.cpp my_lib_source2.cpp)
Czy możesz podać bardzo prosty przykład na temat tych plików CMakeLists.txt? –
@ruslo, punkt odniesienia, ale są one dość dobrze skomentowane i pokazują użycie szerokiej gamy funkcji, co jest więcej niż mogę powiedzieć dla wielu innych przykładów. Dodatkowo CMakeLists stają się prostsze, gdy schodzisz do struktury katalogów; Mam nadzieję, że każdy może zrozumieć pliki do budowy wewnętrznych bibliotek statycznych, na przykład. – TartanLlama
Mam nadzieję, że this tutorial jest dokładnie tym, czego potrzebujesz od konfiguracji CMake do prostego projektu zawierającego jeden plik wykonywalny i kilka bibliotek - zobacz! Znajdę CUpewnij przykładem każdym razie najlepszą możliwość, aby dowiedzieć się CWprowadä łatwy sposób:
Korzystanie CMake z wykonywalnych
add_executable(myapp main.c)
Korzystanie CMake z bibliotek statycznych
add_library(test STATIC test.c)
Używanie CMake z bibliotekami dynamicznymi
add_library(test SHARED test.c)
Łączenie bibliotek do plików wykonywalnych z CMake
add_subdirectory(libtest_project) add_executable(myapp main.c) target_link_libraries(myapp test)
Jeśli jesteś zainteresowany, możesz nieco ulepszyć ten samouczek, użyj: [cmake -H. -B_builds] (http://stackoverflow.com/a/20611964/2288008) do zbudowania projektu (zamiast 'mkdir _builds && cd _builds && cmake ..'). 'make' i' make install' będą działać tylko dla makefile, możesz użyć 'cmake --build _builds' i' cmake --build _builds --target install' dla dowolnego rodzaju generatorów. Również wtedy, gdy używasz 'ExternalProject_Add', nie możesz używać modułów' find_package'. –
- 1. Jak poprawnie skonfigurować wieloplatformowy projekt Delphi XE2?
- 2. Jak poprawnie utworzyć projekt Scala?
- 3. Jak poprawnie skonfigurować NSFetchedResultsController
- 4. CMake, jak poprawnie tworzyć zależności między celami
- 5. CMake generuje projekt xcode z lokalizacjami
- 6. Jak skonfigurować projekt wtyczki Gradle w IntelliJ?
- 7. jak skonfigurować projekt kątowy-cli dla rc5?
- 8. Jak poprawnie skonfigurować pipenv w PyCharm?
- 9. Jak poprawnie skonfigurować domenę w MailGun?
- 10. Jak poprawnie skonfigurować niestandardowy handler404 w django?
- 11. Cmake dodać projekt niestandardowy VS2010 Budowanie zdarzeń
- 12. Jak poprawnie skonfigurować Gradle w Android Studio dla ActionBarSherlock?
- 13. Jak skonfigurować CMake do budowy biblioteki dla iPhone'a
- 14. Projekt QtCreator CMake - jak wyświetlić wszystkie pliki projektu
- 15. projekt budynku obejmujące cmake, jak mogę uczynić go świadoma bibliotek
- 16. Jak utworzyć projekt Xcode z istniejącego projektu git cmake?
- 17. Jak poprawnie przekazać listę CMake (średnik-sep) flag do set_target_properties?
- 18. Struktura Android Studio Projekt nie wyświetla poprawnie
- 19. Jak skonfigurować projekt C++ na github, aby był przenośny?
- 20. Jak skonfigurować projekt NDK w Android Studio 1.3
- 21. Jak skonfigurować projekt maven w Intellij IDEA 12
- 22. JSP/GlassFish: jak poprawnie skonfigurować kodowanie UTF-8?
- 23. Jak poprawnie skonfigurować obserwator plików scss w PhpStorm?
- 24. Jak poprawnie skonfigurować plik database.yml w Railsach 4
- 25. Jak poprawnie skonfigurować tożsamość puli aplikacji IIS 7?
- 26. Rails 4, jak poprawnie skonfigurować ustawienia SMTP (Gmail)
- 27. Jak poprawnie skonfigurować 'ContextMenu' w ListView dla Windows Phone 8.1?
- 28. Określ, w jaki sposób cmake tworzy projekt wizualny studio
- 29. cmake Generator Xcode tworzy projekt, który nie może zbudować
- 30. Jak określić opcje kompilacji dla projektów CMake?
Czy znasz Wiki http://www.cmake.org/Wiki/CMake na cmake teren? –
@SergeiNikulov Cytat: 'Jesteś teraz na wiki CMake. Wiele stron jest teraz ZASTRZEŻONYCH, a czasami nawet uważanych za złe praktyki. Są one przechowywane tylko jako odniesienie dla poprzednich wersji CMake. " – Zingam