Je suis assez nouveau dans CMake, et j'ai lu quelques tutoriels sur la façon de l'utiliser, et j'ai écrit quelques 50 lignes compliquées de script CMake afin de créer un programme pour 3 compilateurs différents. Ceci conclut probablement toutes mes connaissances sur CMake.
Maintenant, mon problème est que j'ai du code source, dont je ne veux pas toucher / manipuler le dossier lorsque je crée le programme. Je veux que tous make
les fichiers et dossiers CMake et de sortie entrent dans ../Compile/
, donc j'ai changé quelques variables dans mon script CMake pour cela, et cela a fonctionné pendant un certain temps lorsque j'ai fait quelque chose comme ça sur mon ordinateur portable:
Compile$ cmake ../src
Compile$ make
Où avec cela j'ai eu une sortie propre dans le dossier dans lequel je suis en ce moment, ce qui est exactement ce que je recherche.
Maintenant, je suis passé à un autre ordinateur, et j'ai recompilé CMake 2.8.11.2, et je suis presque revenu à la case départ! Il compile toujours la chose dans le src
dossier où CMakeLists.txt
se trouve my .
La partie où je choisis le répertoire dans mon script CMake est la suivante:
set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
set(CMAKE_BUILD_DIRECTORY ${dir})
set(CMAKE_BINARY_DIR ${dir})
SET(EXECUTABLE_OUTPUT_PATH ${dir})
SET(LIBRARY_OUTPUT_PATH ${dir}lib)
SET(CMAKE_CACHEFILE_DIR ${dir})
Et maintenant, cela se termine toujours par:
-- Build files have been written to: /.../src
Est-ce que je manque quelque chose?
CMAKE_BINARY_DIR
ouCMAKE_CACHEFILE_DIR
. Que se passe-t-il si vous supprimez tous cesset()
appels et faites simplementcd Compile; rm -rf *; cmake ../src
?