CMake: add lib skeleton and google-tests

This commit is contained in:
2026-02-28 01:56:55 +01:00
parent 114f4ba834
commit 35b7645314
7 changed files with 87 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# ignore checkout dir for Google Tests
google-tests/lib
/.idea
/build

12
CMakeLists.txt Normal file
View File

@@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 4.1)
project(PasadaSuperProject)
option(PASADA_BUILD_TESTS "Build Google Tests" ON)
add_subdirectory(pasada-lib)
if(PASADA_BUILD_TESTS)
enable_testing()
add_subdirectory(google-tests)
endif()

View File

@@ -0,0 +1,19 @@
project(Google_Tests)
set(CMAKE_CXX_STANDARD 20)
# 'lib' is the folder with Google Test sources
add_subdirectory(lib)
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
# 'Google_Tests_run' is the target name
# 'test1.cpp test2.cpp' are source files with tests
add_executable(Google_Tests_run test1.cpp)
target_link_libraries(Google_Tests_run pasada)
#target_include_directories(Google_Tests_run PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/pasada-lib/include")
target_link_libraries(Google_Tests_run gtest gtest_main)
#target_link_libraries(Google_Tests_run PRIVATE Pasada_Lib)
target_include_directories(Google_Tests_run PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../pasada-lib/include")

15
google-tests/test1.cpp Normal file
View File

@@ -0,0 +1,15 @@
//
// Created by david on 28.02.2026.
//
#include <gtest/gtest.h>
#include "library.h"
// Demonstrate some basic assertions.
TEST(HelloTest, BasicAssertions) {
// Expect two strings not to be equal.
EXPECT_STRNE("hello", "world from test1.cpp");
// Expect equality.
EXPECT_EQ(7 * 6, 42);
printf("asdf");
hello();
}

24
pasada-lib/CMakeLists.txt Normal file
View File

@@ -0,0 +1,24 @@
project(Pasada_Lib)
SET(PASADA_SRC
library.cpp
)
if(PASADA_BUILD_TESTS)
# must build a STATIC library for google-tests to successfully consume us
# (otherwise, strange runtime errors ensue when trying to call into the lib)
add_library(pasada STATIC
${PASADA_SRC}
)
else()
add_library(pasada SHARED
${PASADA_SRC}
)
endif()
target_include_directories(pasada
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
)
set(CMAKE_CXX_STANDARD 20)

View File

@@ -0,0 +1,6 @@
#ifndef LIBPASADA_LIBRARY_H
#define LIBPASADA_LIBRARY_H
void hello();
#endif // LIBPASADA_LIBRARY_H

7
pasada-lib/library.cpp Normal file
View File

@@ -0,0 +1,7 @@
#include "library.h"
#include <iostream>
void hello() {
std::cout << "Hello, World!" << std::endl;
}