CMake帮助find_path find_library - 我只是不明白

时间:2013-09-09 17:33:11

标签: linux eclipse cmake libraries

我正在努力学习CMake。我有Mastering CMake书,我正在尝试通过我的第一个“简单”教程。 Using CMake: Hello World Example

我完成了第一部分,但是当我尝试为教程中的“构建库”添加子文件夹时,我只是没有得到它。我一直按照说明一直到最后。

**我们已经看到了如何构建程序的示例。现在让我们创建一个库。该库将被称为“名称”,它将具有单个函数“getWorld”,它返回最近行星的名称。我们选择将这个库放在一个名为“namer”的子目录中 - 我们把它放在哪里并不重要,这只是一个例子。

我在HelloWorld项目中创建了一个子文件夹。我应该把它作为一个单独的项目吗?

**我们可以帮助CMake找到Namer包(它将是我们的名字库)的一种方法是编写一个名为FindNamer.cmake的帮助脚本。这只是用CMake语言编写的另一个文件,它可以在我们的库可能隐藏的所有位置中查找。这是一个例子(把它放在“hello / FindNamer.cmake”中):

这是我的FindNamer.cmake文件:

   find_path(Namer_INCLUDE_DIRS world.h /usr/include "$ENV{NAMER_ROOT}")

   find_library(Namer_LIBRARIES namer /usr/lib "$ENV{NAMER_ROOT}")

   set(Namer_FOUND TRUE)

   if (NOT Namer_INCLUDE_DIRS)
     set(Namer_FOUND FALSE)
   endif (NOT Namer_INCLUDE_DIRS)

   if (NOT Namer_LIBRARIES)
     set(Namer_FOUND FALSE)
   endif (NOT Namer_LIBRARIES)

**这里的重要部分是“find_path”和“find_library”命令,它们查找头文件world.h和名称库。

我按照下面的说明进行操作,最后教程包括:

**如果我们再试一次,配置仍然会失败,因为我们为“find_path”和“find_library”提供的搜索路径实际上并不包含所需的文件。我们可以复制它们,或者将一个硬编码目录添加到find_path和find_library,指向文件在我们硬盘上的位置 - 但更好的是,在Windows上的CMake GUI中或运行“ccmake”。在Linux上,我们可以在那里填写目录。

此时我完全糊涂了(新手!!!!)。我没有NamerConfig.cmake或namer-config.cmake文件,我不知道find_path和find_library应该指向什么。

提前感谢您的帮助, 严重困惑: - (

1 个答案:

答案 0 :(得分:0)

我说我是个新手。我想我也有点累了!是的,这些必须在两个单独的项目中。