首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将配置脚本转换为CMakeLists文件?

如何将配置脚本转换为CMakeLists文件?
EN

Stack Overflow用户
提问于 2020-07-18 20:49:35
回答 2查看 239关注 0票数 0

我想在我的cmake项目中使用this library,但是它附带的是一个configure文件,而不是CMakeLists.txt

代码语言:javascript
复制
#! /bin/sh
# waf configure wrapper
# based on http://code.google.com/p/waf/source/browse/configure

CUR_DIR=$PWD

#possible relative path
WORKINGDIR=`dirname $0`
cd $WORKINGDIR
#abs path
WORKINGDIR=`pwd`
cd $CUR_DIR
WAF=$WORKINGDIR/tools/waf

# Generates a Makefile. Requires that $WAF is set.
#
generateMakefile()
{
    cat > Makefile << EOF
#!/usr/bin/make -f
# Waf Makefile wrapper
WAF_HOME=$CUR_DIR

all:
    @$WAF build

all-debug:
    @$WAF -v build

all-progress:
    @$WAF -p build

install:
    $WAF install --yes;

uninstall:
    $WAF uninstall

clean:
    @$WAF clean

distclean:
    @$WAF distclean
    @-rm -rf build
    @-rm -f Makefile

check:
    @$WAF check

dist:
    @$WAF dist

.PHONY: clean dist distclean check uninstall install all

EOF
}

generateMakefile

"${WAF}" configure $*
exit $?

是否有用于转换的自动化工具?CMake是否支持使用配置文件?是否有转换的经验法则-即用add_library替换...

EN

回答 2

Stack Overflow用户

发布于 2020-07-18 22:08:46

您不需要将上游库转换为cmake即可在cmake项目中使用它。只要您能够安装和/或链接到该库,就可以配置您的cmake项目来使用它。

在cmake中使用第三方库的一种常见模式是,通过提供自己的专用cmake模块文件来查找和配置库,从而使用cmake的find_package()函数。

比方说,您希望加载libfoo。Here are the steps:

cmake

  • 在项目树中创建一个目录来存储您的自定义cmake模块(例如./cmake/modules)

该目录中的

  • 将创建一个名为FindFoo.cmake.

的文本文件

  • in FindFoo.cmake add检查以确定系统中是否确实存在foo。如果是,则设置相关变量。否则,抛出错误。理想的做法是为该库创建一个构建目标,您可以简单地将其作为依赖项添加到其他cmake目标。

  • 通过添加set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")

将您的cmake项目配置为使用本地模块

最后,通过调用find_package(Foo REQUIRED).来配置您的项目以包含您的

票数 2
EN

Stack Overflow用户

发布于 2020-07-18 21:00:20

进行转换的方法是阅读配置脚本,并理解它做什么以及如何做/为什么做。然后编写一个CMakeLists.txt文件来实现同样的功能。

没有捷径可走。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62968778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档