इस मामले में, मैं एक एकल निर्माण/निर्देशिका का उपयोग करने की अनुशंसा करता हूं। सीएमके में संभावित lib1, lib2 और lib3 निर्देशिकाएं उत्पन्न होंगी।
बनाम साझा स्थैतिक के बीच स्विच BUILD_SHARED_LIBS ध्वज का उपयोग करके किया जा सकता है (जाँच add_library प्रलेखन)
CMakeLists.txt संगठन के संबंध में, पसंद आपकी है:
आप एक एकल CMakeLists.txt बना सकता है जिसमें एकाधिक add_library प्रविष्टियां हैं। इसका लाभ यह है कि आपको एक एकल CMakeLists.txt मिलेगा, जो कुछ लोग पसंद करते हैं जब परियोजनाएं सरल होती हैं।
आप अपनी परियोजना को अपने lib1, lib2 और lib3 निर्देशिकाओं पर वितरित एकाधिक CMakeLists.txt में विभाजित कर सकते हैं और add_subdirectory के साथ रूट cmakelists.txt का उपयोग कर सकते हैं। इस सेटअप का लाभ यह है कि बिल्ड-फाइलों को एक कॉल (आपके निर्माण/निर्देशिका में) के साथ उत्पन्न करना आसान होगा, लेकिन फिर आप आसानी से उदा। lib3/और कॉल/msbuild वहाँ कॉल करें। CMake यह सुनिश्चित करेंगे कि निर्भरता सही ढंग से
उदाहरण निर्माण कर रहे हैं 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
उदाहरण 2:
project(P)
add_subdirectory(lib1)
add_subdirectory(lib2)
add_subdirectory(lib3)
प्रत्येक उपनिर्देशिका आप तो अपने CMakeLists.txt बारे में। जैसे 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)
स्रोत
2011-12-12 13:25:33
ग्रेट, धन्यवाद। – Cartesius00