Sono stato alle prese con questo per un po 'di tempo, e le mie avventure con cmake hanno portato solo a soluzioni hackish che sono abbastanza sicuro non sono corrette.Il modo giusto per strutturare il mio progetto C++ con cmake?
ho creato una libreria che si compone di diversi file, come segue:
-libfolder
-codepart1folder
-CMakeLists.txt
-codepart1.cpp
-codepart1.hpp
-codepart2folder
-codepart3folder
-lib.cpp
-lib.hpp
-CMakeLists.txt
ho scritto un file CMakeLists per compilare la libreria (dopo un po 'di sperimentazione), e posso generare un file lib.a. Ora vorrei includere questo codice come libreria in altri progetti e accedervi tramite l'interfaccia in lib.hpp. Qual è il modo migliore per farlo in termini di struttura delle directory e cosa devo inserire in CMakeLists.txt nel mio progetto root?
Il mio tentativo attuale è stata quella di aggiungere -libfolder come sottocartella al mio progetto attuale, e aggiungere i comandi:
include_directories(${PROJECT_SOURCE_DIR}/libfolder)
link_directories(${PROJECT_BINARY_DIR}/libfolder)
add_subdirectory(libfolder)
target_link_libraries(project lib)
Quando eseguo make, la libreria compila bene, ma quando project.cpp compila, si lamenta di non poter trovare codepart1.hpp (che è incluso in lib.hpp, incluso da project.cpp).
Sospetto che questo sia il modo sbagliato per farlo, ma non posso navigare nella documentazione di CMake e trovare un buon tutorial sull'impostazione di progetti come questo. Per favore aiuto, guru di CMake!
Forse non molto utile per cmake per-vedere, ma vorrei consigliarvi di dare un'occhiata a premake. Si avvicina alla maturità e ha molti vantaggi a cmake (uno è che è molto più veloce per mettersi al passo con esso, specialmente se conosci già lua). Puoi verificarlo su http://industriousone.com/what-premake. – Ylisar
quindi, vuoi abilitare il tuo nuovo progetto per usare la libreria precedentemente costruita, o vuoi costruire entrambi da un meta-progetto sortof? – moooeeeep