Il n'y a pas de "hack crade" a faire pour cmake pour savoir sous quel OS tu es, il y a des defines automatique pour ca:
[code]IF (WIN32)
# set stuff for windows
ELSE()
# set stuff for other systems
ENDIF()[/code]
Il y a pour OS X aussi et probablement un LINUX si besoin.
cf:
https://cmake.org/Wiki/CMake_Useful_VariablesUNIX
is TRUE on all UNIX-like OS's, including Apple OS X and CygWin
WIN32
is TRUE on Windows. Prior to 2.8.4 this included CygWin
APPLE
is TRUE on Apple systems. Note this does not imply the system is Mac OS X, only that __APPLE__ is #defined in C/C++ header files. Obtain more specific system information via CMAKE_SYSTEM_VERSION, i.e. IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin"), then it's Mac OS X.
MINGW
is TRUE when using the MinGW compiler in Windows
MSYS
is TRUE when using the MSYS developer environment in Windows
CYGWIN
is TRUE on Windows when using the CygWin version of cmake
BORLAND
is TRUE on Windows when using a Borland compiler
WATCOM
is TRUE on Windows when using the Open Watcom compiler
MSVC, MSVC_IDE, MSVC60, MSVC70, MSVC71, MSVC80, CMAKE_COMPILER_2005, MSVC90, MSVC10 (Visual Studio 2010)
Microsoft compiler
Et mon propos était plutôt, "as tu vraiment besoin de faire ce genre de choses"?
Combien de headers ton projet compte, combien sont change très régulièrement au points de pouvoir casser une build sans tout recompiler, combien de temps ton projet met a compiler depuis 0, et est-ce que l'effort de comprendre comment ça marche avec make va vraiment apporter quelque chose?
N'oublie pas, tout bon développeur est a la base fainéant, mais n'aime pas non plus les choses mal faites: fainéant en veux pas dire faire les choses de manière crade, mais veux dire ne pas se faire chier a faire un truc qui au final ne servira a rien.
Utiliser cmake est probablement une bonne solution si tu veux absolument avoir quelque chose de propre qui gère les descendances, bien plus propre que tout la magie noir makefile-ienne. Si tu te retrouve a faire des makefile avec des cibles "virtuelle" des PHONY a droite a gauche et plein de choses cryptiques a base de %, rewrite de variable etc.. c'est qu'il faut aller chercher un autre outil que make. CMake est je pense une bonne solution dans la majorité des cas.