代码之家  ›  专栏  ›  技术社区  ›  Patricia

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

  •  0
  • Patricia  · 技术社区  · 12 年前

    我正在努力学习CMake。我有一本掌握CMake的书,我正在努力完成我的第一个“简单”教程。 Using CMake: Hello World Example

    我很好地完成了第一部分,但当我试图为教程的“构建图书馆”部分添加子文件夹时,我就是没有得到。我一直按照说明做到最后。

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

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

    **我们可以帮助CMake找到Namer包(这将是我们的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和namer库。

    我遵循了接下来的说明,在教程的最后包括以下内容:

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

    在这一点上,我完全困惑了(新手!!!)。我没有NamerConfig.cmake或namer-config.cmake文件,也不知道find_path和find_library应该指向什么。

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Patricia    12 年前

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