2010-05-06 14 views
6

VC++ 2008 Linux gcc 4.4.3haciendo que las condiciones para Linux y Windows cuando se unen las bibliotecas de Windows

tengo el siguiente problema. Cuando compilo en Windows, necesito la biblioteca ws2_32. Sin embargo, cuando compilo en Linux, no necesito vincular esto.

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

he intentado, sin éxito, que compila bajo Linux. Usando las condiciones anteriores. Sin embargo, siempre trata de vincular el ws2_32 y obtengo un error de compilación. Creo que las condiciones no funcionan, ya que siempre cae bajo la condición de WIN32.

muchas gracias por todas las sugerencias,

Respuesta

4

ya que lo WIN32 es una parte tan fundamental de CMake, supongo que hay más a esto que lo que mencionas.

¿Estás haciendo una comprobación limpia de tu código, o simplemente copiando todo un directorio en Linux? Si tiene todos sus archivos de compilación CMake almacenados en la memoria caché de la compilación de Windows, tal vez (¡tal vez!) Algo se haya infiltrado allí y "se detecte" a sí mismo como WIN32 en Linux.

¿Está seguro de que es esa línea y no otra cosa lo que causa el enlace a la biblioteca perdida Win? Tal vez intente con una línea MESSAGE(STATUS "I am here") dentro del IF(WIN32) solo para asegurarse.

¿Está seguro de que el error se debe al enlace de esa biblioteca? Puedo ver un error tipográfico en su secuencia de comandos, debe ser IF(CMAKE_COMPILER_IS_GNUCXX) - tiene un extra X allí. Quizás no estés vinculando lo que crees que eres, y es por eso que falla.

+0

Sí, era 100% correcto, era X adicional. Gracias – ant2009

Cuestiones relacionadas