CMAKE_INSTALL_PREFIX का उपयोग कैसे करें


97

मैं स्थापित लक्ष्य के साथ Makefile उत्पन्न करना चाहता हूं, डिफ़ॉल्ट / usr / स्थानीय के बजाय / usr पर संस्थापन कर रहा हूं। यह मानते हुए कि निर्देशिका का निर्माण स्रोत उपनिर्देशिका में किया जाता है, मैं निष्पादित करता हूं:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

CMakeCache.txt में शामिल हैं: CMAKE_INSTALL_PREFIX:PATH=/usr(ठीक है?)

अब मैं निष्पादित करता हूं:

बनाना
स्थापित करें

सभी फाइलें अभी भी usr / स्थानीय पर स्थापित हैं। गलत क्या है?

संपादित करें: CMakeLists.txt प्रोजेक्ट फ़ाइलों में से कोई CMAKE_INSTALL_PREFIX नहीं है। Cmake चलाने से पहले, मैं आउटपुट डायरेक्टरी से सब कुछ डिलीट कर देता हूं। CMakeLists.txt में निर्देशों को स्थापित करें:

install(TARGETS mylibrary DESTINATION lib)

जवाबों:



30

इस चर का उपयोग करने के दो तरीके हैं:

  • जॉब उल्लिखित की तरह इसे कमांड लाइन तर्क के रूप में पास करना:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • इसमें मान प्रदान करना CMakeLists.txt:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    लेकिन याद रखें कि इसे पहले से रखें PROJECT(< project_name>) , अन्यथा यह काम नहीं करेगा!


4
अजीब बात है, SET () स्टेटमेंट मेरे लिए तभी काम करता है जब मैं इसे PROJECT () स्टेटमेंट (CMake 2.8) के बारे में बताता हूं।
एस्ट्रोफ्लोयड

2
यह उत्तर और संदर्भ इसे अधिक सीधे लिंक से पहले / परियोजना () कमांड मुद्दे के बाद चर्चा करता है।
क्रेग स्कॉट

यह PROJECTकमांड क्या है और cmakeइसके पहले यह विकल्प कैसे है? आपके पास एक उदाहरण होगा?
स्टीफन

6

लेकिन याद रखें कि इसे पहले से रखें (<प्रोजेक्ट_नाम>) कमांड, अन्यथा यह काम नहीं करेगा!

सेमीक का उपयोग करने का मेरा पहला सप्ताह - जीएनयू ऑटोटूलस के कुछ वर्षों के बाद - इसलिए मैं अभी भी सीख रहा हूं (बेहतर है तो एम 4 मैक्रोज़ लिखना), लेकिन मुझे लगता है कि परियोजना की स्थापना के बाद सीएमएकेई_इनस्टैल_पीआरईएक्स को संशोधित करना बेहतर स्थान है।

CMakeLists.txt

cmake_minimum_required (VERSION 2.8)

set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
project (BarkBark)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")
set (CMAKE_INSTALL_PREFIX /foo/bar/bubba)
message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")

पहला रन (नो कैश)

CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- The C compiler identification is GNU 4.4.7
-- etc, etc,...
CIP = /usr/local (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done

दूसरा रन

CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
CIP = /foo/bar/bubba (should be /foo/bar/bubba
-- Configuring done
-- Generating done

मुझे पता है कि अगर मैं गलत हूं, तो मुझे बहुत कुछ सीखना है। मजा आता है।


जब आप सेट करते हैं तो FORCE का उपयोग करने का प्रयास करें: set (CMAKE_INSTALL_PREFIX / foo / bar / bubba CACHE PATH "Cmake prefix" FORCE)
Jav_Rock 15
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.