Pourquoi ne CMake ignorer exporté CXX et CC des variables d'environnement?

Je suis en cours d'exécution d'un CMake (3.4.3), comme cela, comme expliqué dans le CMake FAQ:

export CC="cc_args.py $PWD/../bin/gcc"
export CXX="cc_args.py $PWD/../bin/g++"
cmake -DCMAKE_BUILD_TYPE=Debug ..

Cependant quand j'ai l'impression CMAKE_CXX_COMPILER et CMAKE_C_COMPILER il pointe toujours vers le système par défaut de compilateurs en /usr/bin. Il ne fonctionne que lorsque j'ai choisi de lire-dans les variables d'environnement comme ceci:

IF (NOT $ENV{CC} STREQUAL "")
  SET(CMAKE_C_COMPILER $ENV{CC})
ENDIF ()
IF (NOT $ENV{CXX} STREQUAL "")
  SET(CMAKE_CXX_COMPILER $ENV{CXX})
ENDIF ()

Mais même alors, le bâtiment échoue avec ce message:

/bin/sh: 1: /home/peterg/bin/cc_args.py /home/peterg/Code/build/../bin/g++: not found

Cependant, je suis certain que tous les chemins sont corrects depuis l'exécution de juste le chemin entre les deux points de sorties de ce que devrait:

g++: fatal error: no input files
compilation terminated.

Mise à jour:

Il semble que le processus de compilation n'aime pas les espaces dans le compilateur chemins. J'ai maintenant créé deux scripts (un pour GCC et un pour les CC) de laquelle s'enroulent les commandes et de propager les arguments et qui semble fonctionner. Mais il me semble que je suis en train de faire quelque chose de fondamentalement mauvais parce que CMake aussi de ne pas accepter la exporté CC=proxy_script_cc.sh et GCC=proxy_script_gcc.sh variables sans les espaces par lui-même.

Utilisez simplement -DCMAKE_CXX_COMPILER et ne pas perdre son temps avec des variables shell.
Je pense que ce que vous recherchez est quelque chose comme set_directory_properties(PROPERTIES RULE_LAUNCH_COMPILE "bash proxy_script_cc.sh") ou des variables globales CMAKE_<LANG>_COMPILER_LAUNCHER
Le cc_args.py script enveloppe le compilateur pour extraire des informations pour l'auto-complétion.
Pour moi, CMake ignore ENV{CC} sur Windows mais pas CentOS. Dans les deux cas, il n'y a pas d'espaces dans le chemin de la GCC.

OriginalL'auteur Lenar Hoyt | 2016-06-13