相关疑难解决方法(0)

使用CMake添加不在子目录中的依赖项

假设有以下目录结构:

root
  |
  +--projects
  |      |
  |      +-test
  |         |
  |         +-CMakeFiles.txt
  |
  +--libs
       |
       +-testlib
            |
            +-CMakeFiles.txt
Run Code Online (Sandbox Code Playgroud)

test包含CMakeFiles.txttestlib包含CMakeFiles.txt."test"生成可执行文件,"testlib"生成静态库.

我希望"test"与"testlib"链接,而不使用符号链接,也不需要将"testlib"库移动到"test"中的子目录中.

因为"testlib"不是"test"的子目录,所以我不能这样做

add_subdirectory("../../libs/testlib")
Run Code Online (Sandbox Code Playgroud)

在测试中CMakeFiles.txt- CMake会抱怨"testlib"不在"test"子目录中.

另外,因为系统有几个不同的编译器,我不能简单地将"testlib"库安装到某种中心目录中,所以我想test编译一个本地副本testlib并与之链接(即好像testlib是一个子目录).我还希望"test"项目能够自动重建"testlib"(如果已经更改).

那么,我该如何处理呢?我在Windows XP SP3上使用CMake 2.8.4.

cmake

17
推荐指数
2
解决办法
1万
查看次数

CMake:如何设置源,库和CMakeLists.txt依赖项?

我有几个项目(所有建筑都使用来自相同源树结构的CMake)都使用他们自己的混合数十个支持库.

所以我想到了如何在CMake中正确设置这个问题.到目前为止,我只发现CMake如何正确地创建目标之间的依赖关系,但我仍然在设置所有具有全局依赖关系(项目级别确实知道所有)或本地依赖关系(每个子级别目标仅处理其自己的依赖).

这里是我的目录结构的简化例子,我现在想出了使用CMake和本地依赖性(例子中只有一个可执行的项目,App1但也有更多的实际,App2,App3等):

Lib
+-- LibA
    +-- Inc
        +-- a.h
    +-- Src
        +-- a.cc
    +-- CMakeLists.txt
+-- LibB
    +-- Inc
        +-- b.h
    +-- Src
        +-- b.cc
    +-- CMakeLists.txt
+-- LibC
    +-- Inc
        +-- c.h
    +-- Src
        +-- c.cc
    +-- CMakeLists.txt
App1
+-- Src
    +-- main.cc
+-- CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)

LIB /力霸/的CMakeLists.txt

include_directories(Inc ../LibC/Inc)
add_subdirectory(../LibC LibC)
add_library(LibA Src/a.cc Inc/a.h)
target_link_libraries(LibA LibC)
Run Code Online (Sandbox Code Playgroud)

LIB/LibB /的CMakeLists.txt

include_directories(Inc)
add_library(LibB Src/b.cc Inc/b.h)
Run Code Online (Sandbox Code Playgroud)

LIB /的LibC /的CMakeLists.txt

include_directories(Inc ../LibB/Inc)
add_subdirectory(../LibB LibB)
add_library(LibC …
Run Code Online (Sandbox Code Playgroud)

c++ cmake

13
推荐指数
1
解决办法
5156
查看次数

标签 统计

cmake ×2

c++ ×1