【发布时间】: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