将.cmake文件中的变量包含到CMakeList.txt的正确方法

时间:2017-08-10 13:39:27

标签: variables path cmake include

我有以下CMake问题。

我的项目结构是:

lib2.cmake

set(LIB2_SOURCES file1.c file2.c ) 我有:

${LIB2_SOURCES}

我想在我的lib1 CMakeList.txt中使用include(../lib2/lib2.cmake) set(LIB1_SOURCES .... ) add_library(media SHARED ${LIB1_SOURCES} ${LIB2_SOURCES})

Cannot find source file:
file1.c

但是我收到了这个错误:

lib2.cmake

如果我更改了我的set(LIB2_SOURCES ../lib2/file1.c ../lib2/file2.c ) 并修复了这样的路径:

lib2.cmake

有效。但这对我来说不是一个好方法。

我可以将lib1移到lib2.cmake目录中,但这对我来说也不是一个好方法。

那么处理这个问题的正确方法是什么呢?有没有办法在不丢失路径的情况下加入player_position=0 tile_1_name=0 for (( i=0; i<=100; i++ )) do if [ "$player_position" == $i ];then echo "Player is on the tile $i" echo $tile_1_name fi tile_1_name+=1 done

1 个答案:

答案 0 :(得分:3)

如果您想拥有不依赖于当前目录的路径,请使用绝对路径:

set(LIB2_SOURCES
        ${CMAKE_CURRENT_LIST_DIR}/file1.c
        ${CMAKE_CURRENT_LIST_DIR}/file2.c
)

CMAKE_CURRENT_LIST_DIR是包含当前正在处理的CMake文件的目录(在处理Project/libs/lib2时,情况为lib2.cmake。)

但是,您可能还希望考虑为lib2提供正确的CMakeLists.txt并在其中定义object library,然后将该对象库添加到其中,而不是定义此类来源。 media库。