相关疑难解决方法(0)

如何在CMake中检查头文件和库函数,就像在Autotools中一样?

我目前正在将一个小型C项目从autotools转换为CMake.

在旧的configure.in我使用以下行检查每个标头和库函数是否存在:

# Checks for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h time.h math.h sys/stat.h errno.h unistd.h fcntl.h signal.h])

# Checks for library functions
AC_FUNC_FORK
AC_CHECK_FUNCS([time localtime mktime gmtime exit fork chdir atol signal])
AC_FUNC_STRFTIME
Run Code Online (Sandbox Code Playgroud)

这就是许多autotools项目做AFAIK的事情.

尽管编译器已经检查了必要的头文件并且链接器检查了库函数,但我的代码仍然需要在配置阶段完成这些检查以正确设置它的编译标志#ifdef HAVE_FOOBAR和类似.

在这种情况下,使用CMake检查标头/功能的最佳做法是什么?

c autotools cmake

15
推荐指数
1
解决办法
7000
查看次数

调用 CMake 是否等同于 ./configure 步骤?

我知道要从源代码编译和安装某些东西,在 Unix 系统中,涉及的三个步骤是:

1) ./configure

2) make

3) make install

从源码查看OpenCV的安装,发现没有./configure步骤,但是有cmake步骤。这给了我cmake相当于./configure. 我还读到cmake可以生成构建系统,例如Makefiles,这就是该./configure步骤的作用。

但是,这篇文章(参见 的第一段what is the difference?)说它也cmake执行实际构建。如果是这种情况,为什么 OpenCV 安装会指示makeafter cmake?另外,我经常看到它cmake与 相比make,而不是./configure。那么,cmake实际上适合在哪里?

configuration cmake

5
推荐指数
1
解决办法
1209
查看次数

标签 统计

cmake ×2

autotools ×1

c ×1

configuration ×1