CMAKE_INSTALL_PREFIX nasıl kullanılır?


100

Yükleme hedefi ile Makefile oluşturmak, varsayılan / usr / local yerine / usr'ye kurulum yapmak istiyorum. Derleme dizininin kaynak alt dizininde yapıldığını varsayarsak, şunu çalıştırırım:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

CMakeCache.txt şunları içerir: CMAKE_INSTALL_PREFIX:PATH=/usr(Tamam mı?)

Şimdi çalıştırıyorum:

Yapmak
kurmak yap

Tüm dosyalar hala usr / local dizinine kurulur. Yanlış olan ne?

Düzenleme: CMakeLists.txt proje dosyalarının hiçbirinde CMAKE_INSTALL_PREFIX yoktur. Cmake'yi çalıştırmadan önce, çıktı dizinindeki her şeyi siliyorum. CMakeLists.txt'deki kurulum yönergeleri şuna benzer:

install(TARGETS mylibrary DESTINATION lib)

Yanıtlar:



31

Bu değişkeni kullanmanın iki yolu vardır:

  • tıpkı Job'un bahsettiği gibi bir komut satırı argümanı olarak iletmek:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • ona değer atamak CMakeLists.txt:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    Ancak komuttan ÖNCE yerleştirmeyi unutmayın PROJECT(< project_name>) , aksi takdirde çalışmaz!


4
Garip, SET () ifadesi sadece PROJECT () ifadesinden (CMake 2.8) SONRA yerleştirirsem benim için çalışıyor.
AstroFloyd

2
Bu cevap ve daha doğrudan bağlantı verdiği referans, project () komutundan önce / sonra komut konusunu tartışıyor.
Craig Scott

Bu PROJECTkomut nedir ve cmakeondan önce bu seçeneğe nasıl sahip olunur ? Bir örnek alır mısın?
Stephane

7

Ancak bunu PROJECT (<proje_adı>) komutundan ÖNCE yerleştirmeyi unutmayın, aksi takdirde çalışmaz!

Cmake'yi kullandığım ilk haftam - birkaç yıl GNU autotools'dan sonra - bu yüzden hala öğreniyorum (m4 makroları yazmaktan daha iyi), ancak projeyi ayarladıktan sonra CMAKE_INSTALL_PREFIX'i değiştirmenin daha iyi bir yer olduğunu düşünüyorum .

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")

İlk çalıştırma (önbellek yok)

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

İkinci çalışma

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

Yanıldıysam bana haber ver, yapacak çok şeyim var. Eğlenceli.


1
SET'i yaptığınızda KUVVET kullanmayı deneyin: set (CMAKE_INSTALL_PREFIX / foo / bar / bubba CACHE PATH "Cmake öneki" FORCE)
Jav_Rock
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.