In questo caso, si consiglia di utilizzare una singola build/directory. CMake probabilmente genererà directory lib1, lib2 e lib3 separate lì.
La commutazione tra STATICO vs. condivisa può essere fatto utilizzando il flag BUILD_SHARED_LIBS (controllare la documentazione add_library)
Per quanto riguarda l'organizzazione CMakeLists.txt, la scelta è vostra:
È puoi creare un singolo CMakeLists.txt che ha più voci add_library. Questo ha il vantaggio di ottenere un singolo CMakeLists.txt, che alcune persone potrebbero preferire quando i progetti sono semplici.
È possibile suddividere il progetto in più CMakeList.txt distribuiti sulle directory lib1, lib2 e lib3 e utilizzare un root cmakelists.txt con add_subdirectory. Il vantaggio di questa configurazione è che sarà più facile generare i file di build con una sola chiamata (nella tua build/directory), ma potresti facilmente passare ad es. lib3/e call make/msbuild lì. CMake farà in modo che le dipendenze sono costruite correttamente
Esempio 1:
project(P)
# Setup lib1
set (LIB1_SOURCES ...) # Fill in your set of source-files here...
add_library(lib1 ${LIB1_SOURCES})
# Do similar for lib2 and lib3
target_link_libraries(lib2 lib1) # Indicate that lib1 is needed for lib2
target_link_libraries(lib3 lib1 lib2) # Indicate that lib2 and lib1 are needed for lib3
Esempio 2:
project(P)
add_subdirectory(lib1)
add_subdirectory(lib2)
add_subdirectory(lib3)
In ogni sottodirectory poi scrivere il CMakeLists.txt. Per esempio. in caso di lib3:
project(lib3)
set(LIB3_SOURCES ...) # Setup the list of sources here.
add_library(lib3 ${LIB3_SOURCES})
# You can refer to other libraries which should be available from the root cmakelists.
target_link_libraries(lib3 lib1 lib2)
fonte
2011-12-12 13:25:33
Grande, grazie. – Cartesius00