मेरे पास स्रोत निर्देशिका में कई स्रोत फ़ाइलें हैं। उदाहरण के लिए a.c, b.c, c.c और gcc द्वारा -combine विकल्प के साथ इसे संकलित करना चाहते हैं।सीएमके और जीसीसी गठबंधन
set(CMAKE_C_FLAGS "-combine")
set(SRC a.c b.c c.c)
add_executable(a.out ${SRC})
सीएमके ऑब्जेक्ट फ़ाइल में प्रत्येक * .c फ़ाइल संकलित करता है, लेकिन मैं सभी स्रोतों को एक ऑब्जेक्ट में संकलित करना चाहता हूं। मैं इसे कैसे प्राप्त कर सकता हूं।
जीसीसी के संदर्भ में:
gcc -combine a.c b.c c.c -o module.o
ar rcs library.a module.o
लेकिन cmake प्रति-मॉड्यूल के सूत्रों के अनुवाद का उपयोग करता है।
gcc a.c -o a.o
gcc b.c -o b.o
gcc c.c -o c.o
ar rcs library.a a.o b.o c.o
संयोजन के साथ अनुवाद प्रोग्राम के प्रदर्शन को तेज कर सकता है। मैं एलटीओ का उपयोग नहीं कर सका जो जीसीसी के पुराने संस्करण के कारण सेमेक में एक ही समस्या का समाधान कर सकता था।
धन्यवाद।
क्या आप सुनिश्चित हैं कि एक विकल्प '-combine' मौजूद है? मुझे एहसास है कि यह वह नहीं है जिसे आप करने की कोशिश कर रहे हैं। हो सकता है कि आपका मतलब '-फहोल-प्रोग्राम' है, जो नैतिक रूप से आपके सभी स्रोत फ़ाइलों को एकसाथ समेकित करने के बराबर है। लेकिन अधिक संभावना है कि आप बस एक पुन: प्रयोज्य पुस्तकालय बनाने की कोशिश कर रहे हैं। गतिशील लाइब्रेरी बनाने के लिए '-shared' का उपयोग करें, या केवल 'ar' प्रोग्राम को एक स्थिर लाइब्रेरी में' .o' फ़ाइलों को गठबंधन करने के लिए उपयोग करें। सीएमके आपके लिए दोनों को स्वचालित कर सकता है। –
हाँ, मुझे यकीन है। यह विकल्प जीसीसी संस्करण 4.4/4.5 –
में मौजूद है दिलचस्प, यह 4.6 में गायब हो गया! :-) इसका उद्देश्य क्या है? कुछ भी जो आप '-फहोल-प्रोग्राम' के साथ प्राप्त नहीं कर सकते? –