我对 Makefile 和 CMake 都不熟悉,我想将这个 3rd-party Makefile 转换为 CMakeList.txt,以便这个 3rd-party 代码可以用最新的 DLib 代码编译,但我不知道如何。
我只知道一些基本的CMake命令,但是这个文件有很多标志和命令选项,我现在感觉很无能。
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 $@ $^ $(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 $@ $<
obj/faceDetection.o: ./src/faceDetection.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<
obj/pupilDetection.o: ./src/pupilDetection.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<
obj/kalmanFilters.o: ./src/kalmanFilters.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<
obj/util.o: ./src/util.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<
obj/oic.o: ./src/oic.cpp
$(CXX) -c $(CXXFLAGS) -o $@ $<
.PHONY: all oic
clean:
rm -rf obj/*.o
rm -rf bin/oic
非常感谢。
最佳答案
这里有一些建议可以帮助您走上正轨:
-g
通常由 CMake 本身正确设置,不需要修改。-O3
是替换为target_compile_options()
的候选对象或者将其添加到适当的CMAKE_CXX_FLAGS_*
.-D
标志是替换为target_compile_definitions()
的候选者或者通过玩弄add_definitions()
.-I
是替换为target_include_directories()
的候选对象或include_directories()
.-l
是替换为target_link_libraries()
的候选对象.pkg-config
的调用可能需要替换为合适的find_package()
.bin/oic
的规则必须替换为add_executable()
.
关于c++ - 如何将此 Makefile 转换为 CMakeList.txt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645730/