2011-07-15 21 views
13

CMake-CPack tarafından neredeyse bir hafta boyunca sinirli oldum.CMake-CPack Paket Yükleme Yolu Kabus

Kötü olan şey, CMake-CPack çevrimiçi belgelerinin bu bölümü iyi belgelememesidir. ile, paket paket sudo dpkg -i MyProgramPackageName tarafından yüklenen fakeroot make package kullanan bir Debian paketi /usr/local kurun:

CPACK_PACKAGING_PREFIX   # NOT documented 
CMAKE_INSTALL_PREFIX   # Documented, but the behavior seems weird 
CPACK_INSTALL_PREFIX   # NOT documented 
CPACK_PACKAGE_INSTALL_DIRECTORY # Documented, but this variable does NOT work as the online document described 
CPACK_PACKAGING_INSTALL_PREFIX # NOT documented 

Ne yapmaya çalışıyorum geçerli:

Googling sonra bu değişkenler kullanmak bulundu Bir alt dizin MyProgramPackageName. Yani, tüm dosyalar /usr/local/MyProgramPackageName-V.1.2.3'un altına yüklenmelidir.

Bu değişkenleri ayarlamak için (CMake 2.8.3 ve CMake 2.8.5) deniyorum. Çok fazla kombinasyon denedim ama başarısız oldu. başarılı

tek yoludur:

Set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/MyProgramPackageName-V.1.2.3) 

Ancak bu değişken bile belgelenmiş DEĞİLDİR ve davranış garanti edilemez. Eğer soru ile kafanız karıştıysa, lütfen CPACK_PACKAGE_INSTALL_DIRECTORY'u ne zaman kullanmamı önerirsiniz? çünkü bu değişkenle ilgili dokümantasyon açıklaması gerçekten caziptir ve benim istediğim şey budur, ancak çalışmayı başaramadım.

Lütfen tavsiye edin. CPACK kullandığı

Peter

cevap

0

yolları, CMakeLists.txt dosyalarında KUR yönergelerinin alınır. Bu, sonuç paketinin 'make install' komutunun yapacağı şeyi yansıtmasına izin verir. Bu, CPACK yapılandırmasını en aza indirir.

Yani, bir örnek CMakeLists.txt dosyasından:

INSTALL(TARGETS ${APPLICATION} DESTINATION bin) 

Bu/usr/bin veya/usr/local/bin kuracaktır. Eğer bir alt dizinin veya tamamen farklı birine yerleştirilebilecek isteseydi, buradan

INSTALL(TARGETS ${APPLICATION} DESTINATION bin/myappdir) 
+0

Kafam karıştı. Paketlemek için CPACK kullanıyorum, böylece uygulamayı istediğim yere yükleyeceğim. INSTALL yönergesinde, her zaman bir klasör veya dosyaları INSTALL_PREFIX/DIRECTORY için göreceli bir yola kurarım. –

+2

Sadece yükleme hedefinde göreceli bir yol istiyorsunuz - CMAKE_INSTALL_PREFIX'e otomatik olarak bağlanır, belirtmeye gerek yoktur. Mutlak bir yol belirtmek, tüm bu yükleme işlerini berbat hale getirmek için uygun bir yoldur. –

9

yapabileceğini bunu desteklemek için herhangi bir belge yoktu, ama ben gibi bazı hata raporları ve e-posta arşivlerini buldunuz aşağıda ne yapmaları gerektiğini olduğunu düşündürmektedir: CPACK_INSTALL_PREFIX ayarlanmazsa

set(CPACK_SET_DESTDIR true) 
set(CPACK_INSTALL_PREFIX /opt/MySuperAwesomePrefix-v.1.2.3)

, bu CMAKE_INSTALL_PREFIX değerlerini kullanacaktır. Artık install(... DESTINATION dest) arasındaki göreceli yollar, paket dosyanızın içinde CPACK_INSTALL_PREFIX/dest olarak bitecektir. Bu bir deb dosyası oluşturmaya çalıştığımda çalıştı.

+0

Önümüzdeki Pazartesi günkü önerinizi deneyeceğim ve sonuçları bilmenizi istiyorum. Teşekkürler. –

+2

Benim için çalıştı, teşekkürler. – usr1234567

İlgili konular