2017-10-09 4 views
0

Je ne suis pas familier avec Makefile et CMake, je veux convertir ce Makefile tiers en CMakeList.txt afin que ce code tiers puisse compiler avec le dernier code DLib, mais je n'ai aucune idée de comment.Comment convertir ce Makefile en CMakeList.txt?

Je connais juste une commande de base de CMake, mais ce fichier a beaucoup de drapeaux et d'options de commande, je me sens très désemparé maintenant.

CXX = g++ 

CXXFLAGS = -g -I./include -I./src/dlib/all/source.cpp -ljpeg -mavx -lm -lpthread -lX11 -DDLIB_HAVE_BLAS -DNDEBUG -DDLIB_JPEG_SUPPORT -DDLIB_HAVE_AVX -O3 `pkg-config --cflags opencv ` 

LDFLAGS = -ljpeg -mavx -lm -lpthread -lX11 `pkg-config --libs opencv` -DDLIB_HAVE_BLAS -DNDEBUG -DDLIB_JPEG_SUPPORT -DDLIB_HAVE_AVX -O3 

all: bin/oic 

bin/oic: obj/dlib.o obj/faceDetection.o obj/pupilDetection.o obj/kalmanFilters.o obj/util.o obj/oic.o 
    $(CXX) -o [email protected] $^ $(LDFLAGS) 

# Should use findpackage(DLib) instead 
#obj/dlib.o: ./src/dlib/all/source.cpp 
#obj/dlib.o: ../../Dlib/dlib-19.7/dlib/all/source.cpp 
# mkdir -p obj bin 
# $(CXX) -c $(CXXFLAGS) -o [email protected] $< 

obj/faceDetection.o: ./src/faceDetection.cpp 
    $(CXX) -c $(CXXFLAGS) -o [email protected] $< 

obj/pupilDetection.o: ./src/pupilDetection.cpp 
    $(CXX) -c $(CXXFLAGS) -o [email protected] $< 

obj/kalmanFilters.o: ./src/kalmanFilters.cpp 
    $(CXX) -c $(CXXFLAGS) -o [email protected] $< 

obj/util.o: ./src/util.cpp 
    $(CXX) -c $(CXXFLAGS) -o [email protected] $< 

obj/oic.o: ./src/oic.cpp 
    $(CXX) -c $(CXXFLAGS) -o [email protected] $< 


.PHONY: all oic 

clean: 
    rm -rf obj/*.o 
    rm -rf bin/oic 

Merci beaucoup.

+0

double possible de [Création fichier CMakeLists de Makefile existant] (https://stackoverflow.com/questions/9985839/creating-cmakelists-file-from-existing-makefile) – Gaurav

+1

'ce fichier a beaucoup de drapeaux et les options de commande, je me sens très désemparé maintenant. »- Nous ne sommes pas un service d'écriture de code. Prenez une commande dans Makefile, essayez de la convertir en CMake, en cas de difficultés, utilisez search. Si la recherche n'aide pas, demandez ici une commande spécifique. – Tsyvarev

+0

@Tsyvarev, OP est à la recherche d'un «point d'entrée». Pourquoi ne pas lui donner quelques indices? Il/elle devra encore trouver une solution complète lui-même. OP peut être dans une situation où il/elle n'a pas le temps d'apprendre CMake de A à Z. –

Répondre

2

Voici quelques conseils qui devraient vous mettre sur la bonne voie:

+0

Merci, ce sont des pointeurs utiles que je peux baser sur moi-même. – hirikarate

1

Je n'ai pas votre code, donc je ne peux montrer les équivalents possibles aux lignes que vous avez:

Vous créez exécutable. Dans CMake, ceci est fait avec add_executable.

add_executable(oic source-file1.cpp source-file2.cpp ...) 

Cette commande assure que oiccible exécutable est créé. Lorsque vous construisez cette cible, vous aurez oic binaire à la fin.

lignes équivalentes pour le réglage des drapeaux:

set_target_properties(oic PROPERTIES LDFLAGS "your link flags") 
set_target_properties(oic PROPERTIES COMPILE_FLAGS "your compile flags") 

Google pour Properties on Targets et set_target_properties.

Ainsi, le squelette de votre fichier CMakeLists.txt devrait être:


CMakeLists.txt

# cmake_minimum_required(VERSION 3.5.1) # you don't need this at this point 

project(oic) 
enable_language(C CXX) 

set(oic_sources 
    src/faceDetection.cpp 
    src/pupilDetection.cpp 
    src/kalmanFilters.cpp 
    src/util.cpp 
    src/oic.cpp 
) 

add_executable(oic ${oic_sources}) 

set_target_properties(oic PROPERTIES LDFLAGS "your link flags") 
set_target_properties(oic PROPERTIES COMPILE_FLAGS "your compile flags") 

Générez le projet

Supposons que vous avez le dossier oic_root dans lequel vous avez oic projet dans lequel il ya vos fichiers src/*.cpp. Supposons que vous êtes dans ce dossier:

$ oic> cd .. 
$ oic_root> make oic_build 
$ oic_root> cd oic_build 
$ oic_build> cmake ../oic -G "Unix Makefiles" 
+0

Il devrait vous arriver quelque part, s'il vous plaît poser d'autres questions si vous suivez cela en quelque sorte. –

+0

Merci, j'ai beaucoup appris de vos réponses et de celles d'Angew, maintenant je sens que j'ai des indices pour marcher sur moi-même. – hirikarate