Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

256
Vistas
Problemas para configurar las variables de entorno para las pruebas de CTest

Tengo la tarea de crear enlaces de python para un proyecto basado en c ++ (usando swig). El proyecto usa cmake para compilar y ctest para probar, y se supone que la compilación y la prueba de los enlaces están integradas en esto.

Logré que la compilación funcionara y las pruebas funcionan cuando se ejecutan manualmente, pero tengo que configurar un par de variables de entorno para que funcionen y tengo problemas para configurarlas para el proceso automatizado.

Necesito configurar LD_LIBRARY_PATH y PYTHONPATH. PYTHONPATH Puedo moverme manipulando sys.path dentro del script de prueba, pero eso es más difícil de hacer con LD_LIBRARY_PATH. Hasta ahora, he agregado lo siguiente a CMakelists.txt en el directorio de prueba:

 #Python wrapper testing find_package(PythonInterp 3.5 REQUIRED) if (NOT PYTHONINTERP_FOUND) message(STATUS "Python interpreter NOT found") else(NOT PYTHONINTERP_FOUND) message(STATUS "Python interpreter found") ADD_TEST(NAME testPyMyproj COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_scripts/test_pyMyproj.py ) set_property(TEST testPyMyproj PROPERTY ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib/) endif (NOT PYTHONINTERP_FOUND)

el error que me sale es

 ImportError: libMyproj.so: cannot open shared object file: No such file or directory

Cuál es la biblioteca a la que están vinculados mis enlaces y está en el directorio especificado por ${CMAKE_BINARY_DIR}/lib/ .

Considero que esto significa que $LD_LIBRARY_PATH no está configurado correctamente, pero no sé qué estoy haciendo mal.

¿Hay alguna manera de verificar dentro de la prueba cuál es el estado de la variable? ¿Alguien puede detectar lo que estoy haciendo mal?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede establecer variables de entorno como parte de la invocación de la prueba mediante el comando cmake -E env . Puede modificar la llamada add_test() a algo como lo siguiente:

 ADD_TEST(NAME testPyMyproj COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib:$ENV{LD_LIBRARY_PATH} ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_scripts/test_pyMyproj.py )

Lo anterior asume un entorno de host basado en Unix, pero podría generalizar esto para admitir todas las plataformas/tipos de generadores con un poco de trabajo si fuera necesario.

Otra alternativa es usar la propiedad de prueba ENVIRONMENT que debería lograr esencialmente lo mismo:

 set_tests_properties(testPyMyproj PROPERTIES ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib:$ENV{LD_LIBRARY_PATH})
over 4 years ago · Santiago Trujillo Denunciar

0

Craig Scott ya proporcionó una gran solución a través de las propiedades de prueba de MEDIO AMBIENTE. Solo quiero agregar cómo funciona esto en Windows con el generador de Visual Studio y las expresiones del generador:

 set_tests_properties( name_of_test_one name_of_test_two PROPERTIES # Make sure DLL is found by adding its directory to PATH ENVIRONMENT "PATH=$<TARGET_FILE_DIR:library_target_name>\;$ENV{PATH}" )

Nota 1: en lugar de dos puntos, use un punto y coma con escape Nota 2: estoy usando la expresión generadora de $ más flexible

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda