Dans mon CMakeLists.txt parent:CMake MATCHS ne fonctionne pas comme je pense qu'il devrait
set(PROGRAMS "CCHIF;CCWIF;FXTINT;FXTCLI")
Dans mon enfant CMakeLists.txt:
set (PROJ_LIST "CCHIF;FXTCLI")
MESSAGE(STATUS "Programs is ${PROGRAMS}")
foreach (PROJ ${PROJ_LIST})
if (";${PROJ};" MATCHES ";${PROGRAMS};")
project(${PROJ})
add_executable(${PROJ} ${PROJ}.c)
target_link_libraries(${PROJ} LINK_PUBLIC pthread dl)
install(TARGETS ${PROJ} DESTINATION ${BIN_DIR})
endif()
Message (STATUS "${PROJ} is NOT in the programs list!!! **********")
endforeach()
Sortie de cmake ..
-- Programs is CCHIF;CCWIF;FXTINT;FXTCLI
-- CCHIF is NOT in the programs list!!! **********
-- FXTCLI is NOT in the programs list!!! **********
J'ai essayé avec et sans le "; ....;" (quote/point-virgule) pour les arguments à MATCHES. J'ai utilisé MATCHES avec succès avant. Cela ne fonctionne pas dans ce cas. J'ai plus de 50 sous-programmes que je construis pour de nombreux sites. Certains sites ont besoin de tous les 50, certains ont seulement besoin d'une partie d'entre eux. donc je voudrais mettre les programmes nécessaires dans le CMakeLists.txt du Parent pour chaque site. Merci
Et vous imprimez le message 'message (STATUS « $ {PROJ} est pas dans la liste des programmes !!! ** ******** ")' dans tous les cas, même si elle correspond car elle est en dehors du bloc if. Pour voir si elle correspond, vous devez ajouter et sinon bloquer à l'if et mettre le 'message()' dans le bloc else. – fedepad
La chaîne 'CCHIF' ne correspond pas à l'expression régulière' CCHIF; CCWIF; FXTINT; FXTCLI'. Cependant, l'inverse est vrai: srting 'CCHIF; CCWIF; FXTINT; FXTCLI' correspond à l'expression régulière' CCHIF'. – Tsyvarev