我有以下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
?
答案 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
库。