Od pewnego czasu borykam się z tym problemem, a moje przygody z cmake doprowadziły tylko do hackowych rozwiązań, które jestem prawie pewien, że nie są poprawne.Właściwy sposób na skonstruowanie mojego projektu C++ za pomocą cmake?
stworzyłem bibliotekę, która składa się z kilku plików, co następuje:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
pisałem plik CMakeLists skompilować bibliotekę (po pewnym eksperymentów) i mogę wygenerować plik lib.a. Teraz chciałbym włączyć ten kod jako bibliotekę w innych projektach i uzyskać do niej dostęp poprzez interfejs w lib.hpp. Jaki jest najlepszy sposób, aby to zrobić, jeśli chodzi o strukturę katalogów i co muszę umieścić w CMakeLists.txt w moim głównym projekcie?
Moja obecna próba została dodać -libfolder jako podfolder do mojego obecnego projektu i dodać komendy:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
Kiedy biegnę zrobić, biblioteka kompiluje grzywny, ale gdy project.cpp kompiluje, narzeka, że nie może znaleźć codepart1.hpp (który jest zawarty w lib.hpp, dołączony z project.cpp).
Podejrzewam, że jest to niewłaściwy sposób, ale nie mogę przejrzeć dokumentacji CMake i znaleźć dobrego samouczka na temat tworzenia takich projektów. Proszę o pomoc, guru CMake!
Być może niezbyt pomocna dla cmake per-see, ale radziłbym ci spojrzeć na premake. Zbliża się dojrzałość i ma wiele zalet dla cmake (jednym z nich jest to, że jest o wiele szybszy, aby przyspieszyć, zwłaszcza jeśli już znasz Lua). Możesz to sprawdzić na stronie http://industriousone.com/what-premake. – Ylisar
, więc czy chcesz włączyć nowy projekt, aby użyć poprzednio zbudowanej biblioteki, czy chcesz zbudować go z meta-projektu sortof? – moooeeeep