Articles of cmake

CMake se compara con la cadena vacía con STREQUAL failed

Siempre pienso que si quieres comparar dos cadenas (pero no variables) todo lo que tienes que hacer es citarlo así: if(“${A}” STREQUAL “some string”) pero ahora descubro que este código a veces se imprime ¡ oops ! cmake_minimum_required(VERSION 2.8) if(“d” STREQUAL “”) message(“oops…”) endif() ¿Puede ser su error (porque se imprime con Xcode , pero […]

Al pasar referencia al vector STL sobre el límite dll

Tengo una buena biblioteca para administrar archivos que necesita devolver listas específicas de cadenas. Como el único código con el que voy a usarlo será C ++ (y Java, pero eso es usar C ++ a través de JNI), decidí usar el vector de las bibliotecas estándar. Las funciones de la biblioteca se parecen un […]

Enlace de error LNK2019 en MSVC, símbolos no resueltos con el prefijo __imp__, pero debe ser de lib estático

Me encuentro con problemas de vinculación en MSVC para un proyecto que escribí para g ++. Aquí está el problema: Construyo libssh como una biblioteca estática como parte de mi aplicación, agregando el objective en cmake con add_library (ssh_static STATIC $ libssh_SRCS) Libssh está en C, entonces tengo ‘externo’ C “{…} ‘envolviendo las inclusiones en […]

Cómo depurar archivos CMakeLists.txt?

¿Hay alguna posibilidad de depurar CMakeLists.txt (al menos la lista de variables) a excepción de la statement de mensaje ?

¿Cuál es la forma correcta de usar `pkg-config` desde` cmake`?

Mirando alrededor de la red, he visto muchos códigos como este: include(FindPkgConfig) pkg_search_module(SDL2 REQUIRED sdl2) target_include_directories(app SYSTEM PUBLIC ${SDL2_INCLUDE_DIRS} target_link_libraries(app ${SDL2_LIBRARIES}) Sin embargo, esa parece ser la forma incorrecta de hacerlo, ya que solo utiliza los directorios y bibliotecas de inclusión, pero las definiciones ignoradas, las rutas de las bibliotecas y otros indicadores pueden ser […]

¿Cómo puedo obtener CMake para encontrar mi instalación alternativa de Boost?

He instalado la versión más reciente de Boost en /usr/local (con inclusiones en /usr/local/include/boost y bibliotecas en /usr/local/lib/boost ) y ahora bash instalar Wt desde el origen, pero CMake (versión 2.6) no parece encontrar la instalación de Boost. Intenta dar sugerencias útiles sobre la configuración de BOOST_DIR y Boost_LIBRARYDIR, pero no he podido hacer que […]

Construir una herramienta inmediatamente para que pueda ser utilizada más adelante en la misma ejecución de CMake

Tengo un problema interesante con el huevo y la gallina y una posible solución (vea mi respuesta), pero esa solución usa CMake de una manera inusual. Mejores alternativas o comentarios serían bienvenidos. EL PROBLEMA: La versión simple del problema se puede describir como un único proyecto CMake con las siguientes características: Uno de los objectives […]

Regla genérica de makefile a CMake

Estoy tratando de “traducir” las líneas fluidas de makefile de vainilla en la syntax de CMake. SRCS = $(wildcard *.foo) OBJS = $(SRCS:.foo=.bar) my_rule: $(OBJS) %.bar: %.foo make_bar_from_foo $@ $< Trabajo feo bash FILE(GLOB SRCS “*.foo”) SET(outFiles) FOREACH(SRC ${SRCS}) SET(OUTPUT_FILE_NAME “${SRC}.bar”) ADD_CUSTOM_COMMAND( OUTPUT “${OUTPUT_FILE_NAME}” COMMAND make_bar_from_foo ${SRC} ${OUTPUT_FILE_NAME} DEPENDS “${SRC}”) SET(outFiles ${outFiles} “${OUTPUT_FILE_NAME}”) ENDFOREACH(SRC) ADD_CUSTOM_TARGET(my_rule […]

¿Cómo modificar las variables de entorno pasadas al destino personalizado de CMake?

Tal vez me falta algo obvio, pero parece que no puedo encontrar la forma de establecer explícitamente las variables de entorno que se pueden ver en los procesos lanzados a través de add_custom_target() . Intenté lo siguiente: set(ENV{PATH} “C:/Some/Path;$ENV{PATH}”) add_custom_target(newtarget somecommand) Desafortunadamente, la %PATH% entorno %PATH% aparece sin cambios en somecommand . (He configurado un […]

CMake comstackción cruzada: indicadores C del archivo toolchain ignorados

Yo uso cmake para la comstackción cruzada. En mi archivo de toolchain hay una línea SET(CMAKE_C_FLAGS “-std=gnu99”) Esta variable no está configurada en CMakeLists.txt nuevamente. Cuando ejecuto cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake .. este indicador se ignora. Para ser más detallado: La línea de flags.cmake muestra una línea C_FLAGS = vacía. Pero en CMakeOutput.log puedo encontrar una línea […]