Bonjour,
Désolé de faire de la pub mais je perds tellement moins de temps avec CMake pour gérer tes petits problèmes que je ne peux m'empêcher de faire une petite pub. Désolé de ne pas répondre à tes questions. J'aurais pu y répondre à une époque mais ça fait trop longtemps que je ne fais plus de Makefile à la main.
Donc, avec CMake (http://www.cmake.org/), ton projet se réduirait à
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
cmake_minimum_required(VERSION 2.8)
project(MyProject)
find_package(CUDA)
file(GLOB_RECURSE sources src/*.c)
file(GLOB_RECURSE cuSources src/*.cu)
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
endif()
# ../inc est-il réellement un répertoire accessible par le dessus ?
include_directories(../inc inc)
cuda_add_executable(program ${sources} ${cuSources}) |
Il suffit de placer ce code dans un fichier qui s'appelle CMakeLists.txt et de lancer CMake.
1 2 3 4
|
cd <BUILD_DIR>
cmake <SOURCE_DIR>
make |
cmake est un exécutable en ligne de commande mais il y aussi une GUI (cmake-gui ou ccmake en ncurses). Pour passer en Debug, il faut positionner CMAKE_BUILD_TYPE à Debug dans la GUI ou en ligne de commande
cmake -D CMAKE_BUILD_TYPE=Debug <SOURCE_DIR>
Que des avantages:
- Tu n'écris plus les règles de compilation
éviter d'avoir à répéter certaines règles
- Séparation nette entre les sources et les produits de compilation
J'aimerais que les fichiers objets créés à la compilation apparaissent dans obj pour ne pas salir le reste.
- C'est beaucoup plus facile à lire.
- C'est multiplateforme. On peut générer des Makefiles mais aussi des projets VisualStudio, Eclipse...
Partager