Plusieurs font des cibles dans le même CMake projet
Dans mon projet j'ai un fichier "makefile" qui ressemble à ceci:
CXX = clang++
CFLAGS = -std=c++11
COMMON_SOURCES = file1.cpp file2.cpp
TARGET_SOURCES = main.cpp
TEST_SOURCES = run_tests.cpp test_file1.cpp test_file2.cpp
COMMON_OBJECTS = $(COMMON_SOURCES:.c=.o)
TARGET_OBJECTS = $(TARGET_SOURCES:.c=.o)
TEST_OBJECTS = $(TEST_SOURCES:.c=.o)
EXECUTABLE = build/application
TEST_EXECUTABLE = build/tests
.PHONY: all target tests
all: target tests
target: $(EXECUTABLE)
tests: $(TEST_EXECUTABLE)
clean:
rm build/tests & rm build/application &
$(EXECUTABLE): $(COMMON_OBJECTS) $(TARGET_OBJECTS)
$(CXX) $(CFLAGS) $(LDFLAGS) $^ -o $@
$(TEST_EXECUTABLE): $(COMMON_OBJECTS) $(TEST_OBJECTS)
$(CXX) $(CFLAGS) $(LDFLAGS) $^ -o $@
.c.o:
$(CXX) $(CFLAGS) $< -o $@
Cela me permet d'exécuter make tests
ou make target
et qu'il va générer l'exécutable approprié.
Comment puis-je configurer un CMakeLists fichier pour obtenir le même pratique système de construction?
OriginalL'auteur Anonymous Entity | 2015-07-11
Vous devez vous connecter pour publier un commentaire.
Sauf pour l'utilisation de clang++, je pense que si vous mettez ceci dans un CMakeLists.txt fichier, puis exécutez votre cmake configurer étape dans un répertoire de construction (c'est à dire,
mkdir build; cd build; cmake ..
), vous devriez avoir ce que vous demandez.add_executable called with incorrect number of arguments
Peut-être il est une étape de base je ne sais pas? Je sais très peu de choses sur cmake.Désolé, je viens de remplacer
OBJECTS
avecSOURCES
et cela a fonctionné.Oui, désolé à ce sujet. Un imprudent d'erreur lorsque je l'ai transcrit votre makefile logique de cmake. J'ai juste édité ma réponse avec cette correction.
OriginalL'auteur Phil
Chaque
add_custom_target()
(et quelques autres commandes, commeadd_executable
) ajoute réellement cible dans le sence.Donc,
test_executable
sera construit surmake tests
, mais pas dans le cas d'un simplemake
.OriginalL'auteur Tsyvarev