2011-02-11 9 views
9

मान लीजिए कि मैं छद्म मानक निर्देशिका लेआउट के साथ एक सरल नमस्ते परियोजना करतेCMake के साथ "मानक" निर्देशिका लेआउट (लिनक्स)

helloworld/ 
    src/ 
    main.c 
    say.c 
    say-helper.c 
    include/ 
    say.h 
    say-helper.h 
    build/ 

और

cd ~/helloworld/build 
cmake .. 
make 

चलाने के बाद मैं निम्नलिखित उम्मीद करेंगे

helloworld/ 
    build/lib/ 
    libsay.a 
    libsay.so 
    libsay.so.1.0.0 
    tmp/obj/ 
    main.o 
    say.o 
    build/bin/ 
    hello 

और make install के बाद मैं

०१२३५१६४१० उम्मीद करेंगे
/usr/local/lib/ 
    libsay.a 
    libsay.so 
    libsay.so.1.0.0 
/usr/local/bin/ 
    hello 

CMakeLists.txt इस सेटअप के लिए क्या दिखेंगे?

मैं उदाहरणों के लिए चारों ओर देख रहा हूं, लेकिन मुझे पता चला है कि एक पुस्तकालय और निष्पादन योग्य कैसे काम नहीं करता है।

उत्तर

8

बुनियादी परियोजना का वर्णन करने के आदेश:

INCLUDE_DIRECTORIES(include) 
ADD_LIBRARY(say src/say.c src/say-helper.c) 

ADD_EXECUTABLE(hello src/main.c) 
TARGET_LINK_LIBRARIES(hello say) 

यह libs और निर्माण निर्देशिका में निष्पादन योग्य रखने के लिए है डाल कि आपके CMakeLists.txt में:

SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) 
SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 
SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) 

के लिए आप स्थापित

install(TARGETS say hello 
      RUNTIME DESTINATION bin 
      LIBRARY DESTINATION lib 
      ARCHIVE DESTINATION lib) 
अपने CMakeLists.txt में

निर्दिष्ट और CMAKE_INSTALL_PREFIX स्थापित करने के लिए/usr/अपने सह में स्थानीय nfiguration।

मुझे यकीन नहीं है कि आप एक ही नाम के साथ एक साथ स्थिर और गतिशील पुस्तकालयों का निर्माण कर सकते हैं। और मुझे नहीं पता कि सीएमके को ओबीजे फाइलों को किसी विशिष्ट स्थान पर रखने के लिए कैसे बताना है।

संबंधित मुद्दे