मेरे पास एक कोर के साथ एक सी ++ प्रोजेक्ट है जो मूल रूप से स्वयं निहित है लेकिन तीसरे पक्ष के कोडों के लिए कई इंटरफेस के साथ उपयोगकर्ता संकलित करना चाहते हैं या नहीं। हम सीएमके का उपयोग कर कोड बनाते हैं और अब मैं कोड को थोड़ा बेहतर व्यवस्थित करने की कोशिश कर रहा हूं।एकाधिक वैकल्पिक निर्भरताओं के साथ सेमेक फ़ाइल पदानुक्रम को व्यवस्थित करने के लिए कैसे करें
जिस समाधान के साथ मैं आया था वह शीर्ष CMakeLists.txt फ़ाइल में विकल्पों का एक सेट है जो निर्धारित करता है कि एक निर्भर पैकेज स्थित होना चाहिए या नहीं।
option(WITH_FOO "Compile the interface to Foo, if found" ON)
option(REQUIRE_FOO "Require that the Foo interface to be compiled" OFF)
option(WITH_BAR "Compile the interface to Bar, if found" ON)
option(REQUIRE_BAR "Require that the Bar interface to be compiled" OFF)
...
if(WITH_FOO)
if(REQUIRE_FOO)
find_package(Foo REQUIRED)
else(REQUIRE_FOO)
find_package(Foo)
endif(REQUIRE_FOO)
else(WITH_FOO)
set(FOO_FOUND FALSE)
endif(WITH_FOO)
if(WITH_BAR)
if(REQUIRE_BAR)
find_package(Bar REQUIRED)
else(REQUIRE_BAR)
find_package(Bar)
endif(REQUIRE_BAR)
else(WITH_BAR)
set(BAR_FOUND FALSE)
endif(WITH_BAR)
फिर उप-निर्देशिकाओं के CMakeLists.txt फाइलों में, इस तरह के रूप में बयान हो जाएगा:
if(BAR_FOUND)
add_subdirectory(bar_interface)
endif(BAR_FOUND)
मैं नहीं विशेष रूप से इस समाधान की तरह करते हैं, आंशिक रूप से, क्योंकि यह बहुत वर्बोज़ है और आंशिक रूप से क्योंकि मुझे लगता है कि ऐसा करने का कुछ और मानकीकृत तरीका होना चाहिए। क्या किसी को बेहतर, अधिक रखरखाव समाधान के बारे में पता है?
अच्छा है! मुझे लगता है कि मुझे जो चाहिए वह कम या ज्यादा है। – Joel