我最近使用源代码构建了ncurses-6.1,并希望配置STIR(断层图像重建软件)以使用此最新版本的ncurses。但是,我不知道如何让cmake搜索include文件夹中的子目录。当在CMakeCache.txt文件中指定ncurses include路径时:
用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名
我在STIR-build目录中运行make时收到以下错误:
In file included from /home/matthew/Programs/stir/STIR/src/display/gen.c:21:0:
/home/matthew/Programs/stir/STIR/src/display/gen.h:111:10: fatal error: curses.h: No such file or directory
#include <curses.h> /* for getch */
^~~~~~~~~~
compilation terminated.
但是,如果指定子目录:
用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名:用户名
然后收到以下错误:
In file included from /home/matthew/Programs/stir/STIR/src/display/gen.h:111:0,
from /home/matthew/Programs/stir/STIR/src/display/screengen.c:23:
/home/matthew/Programs/ncurses/ncurses-6.1-build/include/ncurses/curses.h:60:10: fatal error: ncurses/ncurses_dll.h: No such file or directory
#include <ncurses/ncurses_dll.h>
^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
当我把头文件从子目录直接复制到include文件夹(子目录旁边)时,编译成功了。
1条答案
按热度按时间ubof19bj1#
CMake没有直接提供这样的功能。你可以写一个
file(GLOB_RECURSE ..)
命令来收集一个给定目录下的所有目录到一个列表中,然后基于这个列表发出一个include_directories()
命令。例如:GLOB
命令用于获取目录,因此这很好。你也可以使用这个非常有用的宏,我发现在一个论坛:
正如这篇文章中所建议的Link to post