-
Notifications
You must be signed in to change notification settings - Fork 77
Description
I would like to use Fastor as a dependency in a cmake project. To do that, one would probably go for FetchContent module or use a CPM.cmake package.
Obviously, while doing this, I do not want to build Fastor's tests. However, at the moment, Fastor's tests are being built anyways.
Another issue is that currently Fastor exposes BUILD_TESTING option at the top-level CMakeLists.txt file, which might interfere with other projects' own variables.
cmake3.21 introduces PROJECT_IS_TOP_LEVEL option, that allows to check if project is a dependency for other project. There are also presets, but they are far more complex and require more attention.
I propose a simple fix by bumping cmake version to 3.21 from 3.20, adding a condition on Fastor being a top-level project in order to build tests.
My test project for this consists only of two files: main.cpp and CMakeLists.txt.
// main.cpp
#include <iostream>
#include "Fastor/Fastor.h"
int main()
{
Fastor::Tensor<int,3> a { 1,2,3 };
Fastor::Tensor<int,3> b { 4,5,6 };
std::cout << a+b << std::endl; // so it doesn't compile out
}# CMakeLists.txt
cmake_minimum_required(VERSION 3.21)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project(
qwe
LANGUAGES CXX
)
add_executable(main main.cpp)
# ---- Download Fastor ----
include(FetchContent)
FetchContent_Declare(
fastor
GIT_REPOSITORY https://github.com/Bbllaaddee/Fastor.git
GIT_TAG master
)
FetchContent_MakeAvailable(fastor)
target_include_directories(main PUBLIC ${FASTOR_INCLUDE_DIR})
target_link_libraries(main Fastor)