前言
本文记录CMake使用中需要注意的问题。
add_subdirectory
error specifying an out-of-tree source.
CMake Error at CMakeLists.txt:11 (add_subdirectory): add_subdirectory not given a binary directory but the given source directory “/Users/sunyongjian1/codes/CS.cpp/include/gtest” is not a subdirectory of “/Users/sunyongjian1/codes/CS.cpp/Algorithm”. When specifying an out-of-tree source a binary directory must be explicitly specified.
–root
—-dir1/
——CMakeLists.txt : add_subdirectory(${CMAKE_CURRENT_LIST_DIR}../dir2)
—-dir2/
——CMakeLists.txt
被包含的子目录并不真正是其子目录,如果想要包含一个不在当前工程目录树下的子项目,需要显示指定。
如上所示,dir2 并不是 dir1的子目录。
解决:目录结构不合理,重新组织CMake构建目录,确保被包含的目录确实是包含目录的子目录.