cmake पैकेज के बिना सरल दृष्टिकोण


उदाहरण

उदाहरण जो एक निष्पादन योग्य (संपादक) का निर्माण करता है और एक पुस्तकालय (हाइलाइट) को इससे जोड़ता है। परियोजना संरचना सीधी है, इसे एक मास्टर CMakeLists और प्रत्येक उपप्रोजेक्ट के लिए एक निर्देशिका की आवश्यकता है:

CMakeLists.txt
editor/
    CMakeLists.txt
    src/
        editor.cpp
highlight/
    CMakeLists.txt
    include/
        highlight.h
    src/
        highlight.cpp

मास्टर CMakeLists.txt में वैश्विक परिभाषाएँ हैं और प्रत्येक add_subdirectory लिए add_subdirectory कॉल:

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

पुस्तकालय के लिए CMakeLists.txt स्रोतों को असाइन करता है और इसमें निर्देशिकाओं को शामिल करता है। का उपयोग करके target_include_directories() के बजाय include_directories() शामिल dirs पुस्तकालय उपयोगकर्ताओं के लिए प्रचारित किया जाएगा:

cmake_minimum_required(VERSION 3.0)
project(highlight)

add_library(${PROJECT_NAME} src/highlight.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)

आवेदन के लिए CMakeLists.txt स्रोतों को असाइन करता है और हाइलाइट लाइब्रेरी को लिंक करता है। हाईलाइटर के बाइनरी के रास्ते और इसमें सीमेक द्वारा ऑटोमैटिकली को शामिल किया गया है:

cmake_minimum_required(VERSION 3.0)
project(editor)

add_executable(${PROJECT_NAME} src/editor.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC highlight)