将 Makefile 项目转换为 Cmake
Converting a Makefile project to Cmake
我正在学习如何在本课程中使用cmake,但文档非常冗长和密集。许多教程要么太简单而没有用(cmake只有一个文件),要么太复杂。
该项目的原始生成文件如下所示:
# 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
项目是这样组织的
- cmakelearn
- CMakeList.txt
- 建
- 来源
- CMakeList.txt
- ParseRecord.hpp
- 时机.cpp
- 小.dat
- 生成文件
- 分拣机.cpp
- 时间.hpp
- utility_templates.hpp
- 解析记录.cpp
- Sorter.hpp
- 概率2.cpp
到目前为止,从我所做的阅读中,我知道您需要在每个目录中都有一个CMakelists.txt文件。构建文件夹在那里,以便我可以进入它并运行 cmake ..
在顶级CMakelists中.txt我有
的文件cmake_minimum_required (VERSION 2.6)
project (CMAKETEST)
add_subdirectory(src)
在 src dir 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)'。真? 这个名字是否跳出来了,就像如何向编译器添加标志一样?和 "set(VAR a b c)"比VAR=a b c或类似的东西更直观吗? 在文章和CMake上。然而我知道CMake正在采取 风暴建立世界。
尽管如此,我真的很想学习并弄清楚这一点,以便您提供的任何帮助都将不胜感激和有帮助。提前谢谢。
您不必在每个子目录中创建 cmakelist.txt 文件。对于一个如此简单的项目,将所有内容放入顶级cmakelist就足够了.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)
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 防止主数据类型C++的隐式转换
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- 将 cmake 代码段转换为函数 - 不起作用
- C++:禁用 CMake 中的旧样式转换警告
- 将QMAKE项目转换为CMAKE
- 将 qmake 转换为 cmake 时出现链接错误
- 将GCC命令转换为Android NDK的CMAKE
- 如何使用Cmake为SimuroSot模拟器构建(从DevCpp转换)Win32 DLL
- qmake 到 cmake 转换和链接错误
- 我需要帮助将 vcxproj 转换为 cmake
- 如何将.ino Arduino项目转换为CMake
- 将项目转换为 qt5 并将未定义的引用转换为 'vtable for qt5 和 cmake
- 如何将cmake项目转换为Visual Studio等效项
- 将 Makefile 项目转换为 Cmake
- 将makefile转换为cmake
- 静态库-如何导入'.在c++中把一个'文件转换成CMake