【问题标题】:Change cmake source search location更改 cmake 源搜索位置
【发布时间】:2015-10-19 15:13:54
【问题描述】:

我的目录结构如下:

├───3rd
│   └───lua // this is git submodule, I can't modify anything here
│       ├───doc
│       └───src
└───cmake
    └───lua // CMakeLists.txt for ../../3rd/lua is here

我将外部库拉到我的仓库中,比如说 lua。发行版中没有 cmake 支持。而且我不能用nmake在windows上构建它。然后我想在我的 lua 仓库中的某个地方创建一个 CMakeLists.txt

假设我将CMakeLists.txt for lua 放在./cmake/lua/CMakeLists.txt 中。相对于这个位置,我必须指定前缀为 ../../3rd/lua/src/ 的源,这不好

set(SOURCES
    ../../3rd/lua/src/lapi.c
    ../../3rd/lua/src/lauxlib.c
    ../../3rd/lua/src/lbaselib.c
    <...>)
add_library(liblua ${SOURCES}).

../../3rd/lua/src/ 放入变量中并在每个源文件中添加前缀也不是很好。所以我想用${PROJECT_SOURCE_DIR}/../../3rd/lua/src 更改源文件的基本搜索路径。我还想影响include_directories 的基本路径。我以为把PROJECT_SOURCE_DIR改成这个就可以了,但是一点效果都没有。

我使用在这里找到的脚本CMAKE: Print out all accessible variables in a script 列出所有变量,并且所有变量都引用了 CMakeLists.txt 位置我更改为${PROJECT_SOURCE_DIR}/../../3rd/lua/src

set(CMAKE_CURRENT_LIST_DIR C:/dev/lua-external-cmake/3rd/lua/src)
set(CMAKE_CURRENT_SOURCE_DIR C:/dev/lua-external-cmake/3rd/lua/src)
set(CMAKE_HOME_DIRECTORY C:/dev/lua-external-cmake/3rd/lua/src)
set(CMAKE_SOURCE_DIR C:/dev/lua-external-cmake/3rd/lua/src)
set(PROJECT_SOURCE_DIR C:/dev/lua-external-cmake/3rd/lua/src)
set(Project_SOURCE_DIR C:/dev/lua-external-cmake/3rd/lua/src)

似乎没有这样的变量,因为这个变化没有效果。我知道改变其中一些是完全错误的。我这样做只是为了看看是否会有任何影响。

那么,如何更改 cmake 中包含文件的源搜索位置和基本路径?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    CMake 中没有source search path。但是您可以使用常见的 cmake 命令轻松地“变基”源代码:

    set(SOURCES
        lapi.c
        lauxlib.c
        lbaselib.c
        <...>)
    set(SOURCES_ABS)
    foreach(source ${SOURCES})
        list(APPEND SOURCES_ABS ${PROJECT_SOURCE_DIR}/../../3rd/lua/src/${source})
    endforeach()
    add_library(liblua ${SOURCES_ABS}).
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多