J'ai une liste de fichiers qui doivent être compilés pour mon exécutable principal. Mes tests ont également besoin de ces fichiers. Lorsque le (s) exécutable (s) de test est (sont) construit (s), les fichiers objets sont reconstruits, même si plus tôt dans la construction, ils ont été construits lors de la construction de l'exécutable principal. Ai-je tort de penser que ce n'est pas nécessaire?CMake - objets construits deux fois inutilement?
Si oui est-il un moyen de désactiver cela?
Exemple:
set(SOURCES
${SOURCE_DIR}/file.c
${SOURCE_DIR}/another_file.c)
set(MAIN ${SOURCE_DIR}/main.c)
add_executable(main_executable ${SOURCES} ${MAIN})
add_executable(test1_ex ${PROJECT_SOURCE_DIR}/test/test1.cc ${SOURCES})
Pouvez-vous publier les parties pertinentes de votre fichier makefile? –
Si vous répertoriez le même fichier source pour plusieurs cibles, il sera construit une fois * pour chaque cible *. –
CMake les construira deux fois, car vous pourriez avoir différents drapeaux de compilation pour vos exécutables principal et de test. Vous pouvez éviter cela en les compilant d'abord dans une bibliothèque, puis en liant cette bibliothèque à vos deux exécutables. –