CMAKELISTS.TXT文件编写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMAKELISTS.TXT文件编写相关的知识,希望对你有一定的参考价值。
参考技术A cmake使用cmake是什么?
一.单目录单文件的编写方式
1.创建CMAKELISTS.TXT文件
cmake_minimum_required(VERSION 3.17) --版本号设置
PROJECT(工程名)
---生成可执行文件
ADD_EXECUTABLE( 目标文件(可执行文件) 依赖文件(.cpp))
二.单目录多个源文件的方式
需要添加AUX_SOURCE_DIRECTORY(./ DIR_SRCS) ------将某个目录下的文件存储在某个变量内
需要修改的是ADD_EXEXUTABLE(目标文件 $DIR_SRCS )
三.多文件多目录----非标准与标准的方式
工程结构:
1.先编写里面的CMakeLists.txt文件
AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)
add_library(MyLib $DIR_LIB_SRCS)#静态库
#add_library(MyLib SHARED $DIR_LIB_SRCS) #动态库
2.编写外层CMAKELISTS.txt
cmake - CMakeLists.txt 不在根文件夹中(但包含在源代码中)
【中文标题】cmake - CMakeLists.txt 不在根文件夹中(但包含在源代码中)【英文标题】:cmake - CMakeLists.txt is not in root folder (but is included in source) 【发布时间】:2014-02-20 00:11:16 【问题描述】:我正在尝试编译一个 libpng 库。问题是我需要这个库的特定版本 - 1.2.37 - 因为我正在使用它的项目是用这个版本编写的。 我找到了这个版本的源代码here(GnuWin32项目)。
但是文件夹结构看起来像这样:
libpng-1.2.37-src/
contrib/
projects/
scripts/
CMakeLists.txt
png.h
pngread.c
pngwrite.c
...
看,CMakeLists.txt 比源文件深一层。
我试过了:
-
源目录 libpng-1.2.37-src/ -> 导致错误:源目录似乎不包含 CMakeLists.txt
源目录libpng-1.2.37-src/scripts -> 导致多个错误:文件libpng-1.2.37-src/scripts/scripts/libpng.pc.in 不存在。
将 CMakeLists.txt 从 /scripts 复制到 /libpng-1.2.37-src 并将源目录设置为 /libpng-1.2.37-src -> 导致错误:源“/libpng-1.2.37-src/CMakeLists.txt”与用于生成缓存的源“/libpng-1.2.37-src/scripts/CMakeLists.txt”不匹配.
我应该怎么做才能让它工作?不知道为什么不能使用CMakeLists.txt文件会被包含进来。
【问题讨论】:
我相信你应该再次尝试3.
,但在此之前擦除二进制目录。该错误来自更改源目录,同时保持缓存不变 - 如果您从新的二进制目录开始,它应该可以工作。
【参考方案1】:
INSTALL
文件明确表示:
If you want to use "cmake" (see www.cmake.org), copy CMakeLists.txt
from the "scripts" directory to this directory and type
cmake . [-DPNG_MMX=YES] -DCMAKE_INSTALL_PREFIX=/path
make
make install
作为旁注,在此之前它说安装它的经典方法是:
On Unix/Linux and similar systems, you can simply type
./configure [--prefix=/path]
make check
make install
听起来您在 3) 上做得对,但是您在重试之前忘记清理构建目录。
【讨论】:
为什么我觉得这个答案告诉我在其他地方有解决方案【参考方案2】:如果它是您在项目中使用的库,您可以通过称为“superbuild”的技术自动构建它(使用 ExternalProject_Add)。 通过将 SOURCE_SUBDIR 指定为 here 描述的 CMakeLists.txt 子目录,您可以执行类似的操作
ExternalProject_Add(libpng
GIT_REPOSITORY url-to-your-repository.git
GIT_TAG v1.2.37
SOURCE_SUBDIR "scripts"
【讨论】:
以上是关于CMAKELISTS.TXT文件编写的主要内容,如果未能解决你的问题,请参考以下文章
[forward] cmake, CMakeLists.txt梳理
CMake 找不到源文件,但在 TFS 构建定义中的 CMakeLists.txt 中未指定文件
cmake - CMakeLists.txt 不在根文件夹中(但包含在源代码中)