2009-03-18 16 views
22

Me pregunto cómo puedo usar el comando bash en CMakeLists.txt. Lo que quiero es conseguir que el número de procesadores recuperado usando:CMake: cómo usar el comando bash en CMakeLists.txt

export variable=`getconf _NPROCESSORS_ONLN` 

y establecer NB_PROCESSOR a la variable usando algo como:

SET (NB_PROCESSOR variable) 

Así que mi pregunta es ¿cómo puedo usar el comando getconf en CMakeLists. txt y ¿cómo puedo usar el resultado (almacenado en la variable) en el comando CMake SET?

Respuesta

19

Esto parece ser el truco, y guarda el "conjunto" también.

execute_process(COMMAND getconf _NPROCESSORS_ONLN 
       OUTPUT_VARIABLE NB_PROCESSOR) 
+0

con esto, veo el resultado del comando durante la "cmake." pero si tengo "#cmakedefine NB_PROCESSOR $ {NB_PROCESSOR}" en mi config.h.in, obtendré "#undef NB_PROCESSOR" en lugar de "#define NB_PROCESSOR value". ¿Cualquier pista? – claf

+0

I messed up - debería ser OUTPUT_ no RESULT_VARIABLE. El primero almacena el resultado del programa, este último el resultado ($? In bash-speak) – richq

+0

ya probado y parece que no funciona, creo que el resultado puede considerarse como una cadena y quiero un int. Todavía estoy tratando de encontrar una solución :) – claf

7

utilizar el comando EXEC_PROGRAM y luego utilice la opción CACHE del comando SET a guardar el resultado en una variable como GTK_PKG_FLAGS. Luego use el comando SET para agregar el valor. Algo como esto:

IF(NOT GTK_PKG_FLAGS) 
    EXEC_PROGRAM(pkg-config ARGS --cflags --libs gtkmm 
       OUTPUT_VARIABLE GTK_PKG_FLAGS) 
    SET(GTK_PKG_FLAGS "${GTK_PKG_FLAGS}" CACHE STRING "GTK Flags") 
ENDIF(NOT GTK_PKG_FLAGS) 
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GTK_PKG_FLAGS}") 

Enlaces: http://www.cmake.org/pipermail/cmake/2005-January/006051.html

Cuestiones relacionadas