我正在为C ++存储库尝试使用CMake,但是我遇到了一些麻烦,试图在相同的源代码树中构建针对库的应用程序很容易,而没有大量额外的CMake代码。
源树的布局基本如下:
ROOT
libs/
lib1/
lib2/
lib3/
apps/
app1/
app2/
app3/
这些库彼此独立,应用程序可以链接到一个或多个库。
目前我有一个根CMakeLists.txt,它将每个应用程序和库列为子目录,这样如果更改了库并重建了应用程序,那么库也是如此。这样工作正常,CMake链接它,而不必指定库所在的位置,但我没有看到为包含目录做类似事情的方法。
有没有一种常用的方法来处理这个问题?我不希望每个应用程序的CMakeLists.txt都必须手动列出所需库的路径。
答案 0 :(得分:1)
如果您不害怕提供比每个应用程序实际需要的更多标头,您可以在INCLUDE_DIRECTORIES语句中列出所有lib目录,例如在CMakeListst.txt中添加所有应用程序子列表。但是没有这样的概念来管理“归属”,包括每个目标内置的文件夹。