CMake-codecov icon indicating copy to clipboard operation
CMake-codecov copied to clipboard

use cmake current source dir to get correct path

Open callalilychen opened this issue 2 years ago • 2 comments

Using the repo as third party library using FetchContent failed:

 FetchContent_Declare(
       cmake-codecov
       GIT_REPOSITORY https://github.com/RWTH-HPC/CMake-codecov.git
)
FetchContent_MakeAvailable(cmake-codecov) 

with the following error message:

CMake Error at build/_deps/cmake-codecov-src/src/libfoo/CMakeLists.txt:13 (add_coverage):
  Unknown CMake command "add_coverage".

This PR fix the issue by using the correct cmake variable in CMakeLists.txt

callalilychen avatar Nov 07 '21 13:11 callalilychen

Using FetchContent_Declare() is not the intended way to include this project in CMake. We should check compatibility first, so it doesn't break anything else. If we can ensure it works, a new section should be added in the README.

My concern is, including this module via FetchContent_Declare(), all test targets from /src will be included into the master project. This shouldn't happen, as the root CMakeLists.txt file was intended for testing only.

alehaa avatar Nov 07 '21 15:11 alehaa

FetchContent_Declare() does not call add_subdirectory(), but FetchContent_MakeAvailable(cmake-codecov) will do it. FetchContent_Declare() only clone the repository. I also released that FetchContent_MakeAvaiable() is not the best way to use the library like you said. But I still think CMAKE_SOURCE_DIR is not the best variable to use, because CMAKE_SOURCE_DIR means the root source directory of the whole cmake project, which is not the current directory. To reference the current directory is better to use PROJECT_SOURCE_DIR, or CMAKE_CURRENT_DIR or CMAKE_CURRENT_LIST_DIR, which are more explicit.

I use the library now like this: https://github.com/rainerschoe/ZeroCopyMessagePack/blob/master/CMakeLists.txt#L42-L51

callalilychen avatar Nov 08 '21 14:11 callalilychen