5

我正在为 C++ 存储库尝试 CMake,但我遇到了一些麻烦,试图在没有大量额外 CMake 代码的情况下轻松地针对同一源树中的库构建应用程序。

源码树的布局基本如下:

ROOT
    libs/
         lib1/
         lib2/
         lib3/
    apps/
         app1/
         app2/
         app3/

这些库相互独立,并且应用程序可以链接到一个或多个库。

目前,我有一个根 CMakeLists.txt,它列出了每个应用程序和库作为子目录,以便如果库被更改并且应用程序被重建,那么库也是如此。这工作正常,CMake 将其链接,而无需我指定库所在的位置,但我看不到为包含目录执行类似操作的方法。

有没有通用的方法来处理这个?我不希望每个应用程序的 CMakeLists.txt 都必须手动列出它需要的库的路径。

4

1 回答 1

1

如果您不害怕为每个应用程序提供比实际需要更多的标头,您可以在 INCLUDE_DIRECTORIES 语句中列出所有 lib 目录,例如在 CMakeListst.txt 中添加所有应用程序子列表。但是没有这样的概念来管理“归属”包括每个内置目标的文件夹。

于 2012-08-08T14:52:21.000 回答