2010-05-06 19 views
6

, Windows VC++ 2008 linux gcc 4.4.3yapım linux için şartlar ve pencereler kütüphaneler

bağlama Aşağıdaki sorun var. Windows üzerinde derlediğimde ws2_32 kütüphanesine ihtiyacım var. Ancak, linux'u derlediğimde bunu bağlamana gerek yok.

Benim CMakeLists.txt

INCLUDE_DIRECTORIES($CLIENT_SERVER_SOURCE_DIR/client) 
INCLUDE_DIRECTORIES($CLIENT_SERVER_SOURCE_DIR/cltsvr_ults) 

# Link the library 
LINK_DIRECTORIES($CLIENT_SERVER_DIR/client) 

# Add the executable 
ADD_EXECUTABLE(clt test_clt) 

# Link the executable to the client library 
IF(WIN32) 
    TARGET_LINK_LIBRARIES(clt client ws2_32) 
ENDIF(WIN32) 

IF(CMAKE_COMPILER_IS_GNUCXXX) 
    TARGET_LINK_LIBRARIES(clt client) 
ENDIF(CMAKE_COMPILER_IS_GNUCXXX) 

ben linux altında derlemek için başarısız çalıştık. Yukarıdaki koşulları kullanarak. Ancak, her zaman ws2_32'yi bağlamaya çalışır ve bir derleme hatası alırım. Koşulların her zaman WIN32 koşulu ile düştüğü için çalışmadığını düşünüyorum. WIN32 şey CMake böyle temel bir parçasıdır

cevap

4

yana tüm öneriler için

çok teşekkürler, ben bahsettiklerinize daha bu daha olduğunu tahmin ediyorum.

Kodunuzu temiz bir şekilde kontrol ediyor musunuz, yoksa sadece Linux'ta bütün bir dizini mi kopyalıyorsunuz? Tüm CMake derleme dosyalarınız Windows derlemesinden önbelleğe alınmışsa, belki de (belki de!) Bir şey var ve Linux'ta WIN32 olarak kendini tespit ediyor?

Bu satırın satır başı Win-kitaplığı bağlantısına neden olan başka bir şey olmadığından emin misiniz? Belki de emin olmak için IF(WIN32) içerisinde MESSAGE(STATUS "I am here") hattını deneyebilirsiniz.

Bu kitaplığın bağlanması nedeniyle hatanın olduğundan emin misiniz? Komut dosyanızda bir yazım hatası görebiliyorum, IF(CMAKE_COMPILER_IS_GNUCXX) olmalıdır - orada fazladan bir X var. Belki de, senin olduğun şeyle bağlantı kurmuyorsun ve bu yüzden başarısız oluyor.

+0

Evet,% 100 doğru değildiniz, ekstra X idi. Teşekkürler – ant2009

İlgili konular