redis3m icon indicating copy to clipboard operation
redis3m copied to clipboard

CMake issue when compiling redis3m as submodule (use CMake add_subdirectory)

Open zyy17 opened this issue 7 years ago • 0 comments

I use redis3m as git submodule in my project:

$ tree -L 1 ch1/
ch1/
├── build
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── gtest/
├── main.cc
├── Makefile
├── redis3m/
└── test

I add CMake add_subdirectory to compile redis3m:

add_subdirectory(redis3m)

Then I got the following error message:

[ 41%] Built target redis3m
make[2]: *** No rule to make target `Doxyfile', needed by `redis3m/docs'.  Stop.
make[1]: *** [redis3m/CMakeFiles/apidoc.dir/all] Error 2
make: *** [all] Error 2

I fix the error by changing CMAKE_SOURCE_DIR to CMAKE_CURRENT_SOURCE_DIR:

 FIND_PACKAGE(Doxygen QUIET)
 IF (DOXYGEN_FOUND)
-        SET(DOXYGEN_INPUT "${CMAKE_SOURCE_DIR}/Doxyfile")
+      SET(DOXYGEN_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile")
   SET(DOXYGEN_OUTPUT "docs")

I think CMAKE_CURRENT_SOURCE_DIR better than CMAKE_SOURCE_DIR when compiling redis3m in a project with multiple dependencies (When compiling redis3m alone, the two variable is same).

zyy17 avatar Mar 02 '17 04:03 zyy17