[英]Converting a Makefile project to Cmake
我正在學習如何使用cmake這個類,但文檔非常冗長和密集。 許多教程要么太簡單而無法使用(僅使用一個文件進行cmake)或太復雜。
該項目的原始Makefile如下所示:
# Some optimization settings
# see: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
# Standard all target
all: hw1_p2
# Simple program to do brute-force k-nearest neighbor searches against a signature file
hw1_p2: prob2.o ParseRecord.o Sorter.o Timing.o
g++ -o hw1_p2 prob2.o ParseRecord.o Sorter.o Timing.o
prob2.o: prob2.cpp utility_templates.hpp
g++ -Wall -c prob2.cpp
ParseRecord.o: ParseRecord.cpp ParseRecord.hpp utility_templates.hpp
g++ -Wall -c ParseRecord.cpp
Sorter.o: Sorter.cpp Sorter.hpp
g++ -Wall -c Sorter.cpp
# Timing class
Timing.o: Timing.hpp Timing.cpp
g++ -Wall -c Timing.cpp
# Clean code-derived files
clean:
rm -f *.o hw1_p2
該項目的組織方式如下
到目前為止,從我已經完成的閱讀中我了解到每個目錄中都需要一個CMakelists.txt文件。 構建文件夾在那里,以便我可以進入它並運行cmake ..
在我的頂級CMakelists.txt文件中
cmake_minimum_required (VERSION 2.6)
project (CMAKETEST)
add_subdirectory(src)
在src目錄CMakelist.txt這里是我的嘗試:
include_directories(${CMAKETEST_SOURCE_DIR}/src)
link_directories(${CMAKETEST_BINARY_DIR}/src)
add_executable(hw1_p2 prob2.cpp ParseRecord.cpp Sorter.cpp Timing.cpp)
我甚至不知道從哪里開始。 這個教程的評論幾乎總結了我對cmake和文檔的看法:
不夠詳細,不夠有用。 話雖如此,我還是不喜歡CMake; 你需要知道的太多獨立,隨意的事情。 至少這是我的印象。 比如'add_definitions(-std = c99)'。 真? 這個名稱是否會向您推斷如何向編譯器添加標志? 並且“設置(VAR abc)”比VAR = abc或某些更直觀嗎? Beh在文章上,在CMake上。 但我知道CMake正在風暴中占據構建世界。
盡管如此,我真的很想學習並弄清楚這一點,所以你能提供的任何幫助都會非常感激和樂於助人。 提前致謝。
您不必在每個子目錄中創建cmakelists.txt文件。 對於一個簡單的項目,它應該足以將所有內容放入頂層cmakelists.txt中
cmake_minimum_required (VERSION 2.6)
project (CMAKETEST C CXX)
add_executable(hw1_p2 src/prob2.cpp src/ParseRecord.cpp src/Sorter.cpp src/Timing.cpp)
這個簡單的cmakelists.txt應該完成工作。
add_executable
命令用於構建可執行文件,但您似乎也嘗試使用它來構建對象( .o
)文件。 由於您只構建一個可執行文件,因此只需要一個add_executable
命令:
add_executable(hw1_p2 prob2.cpp ParseRecord.cpp Sorter.cpp Timing.cpp)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.