0

我的项目树是:

Name
    - Catch-tests
       -- Catch CMAKE
       -- test.cpp (included as exec in cmake)
    - include (stores headers)
       -- foo.h
    - src (stores implementation)
       -- foo.cpp
    - Cmake for entire project
    - main.cpp

因此,当我在 test.cpp 中包含 foo.h 并尝试调用在 foo.h 中声明并在 foo.cpp 中实现的函数时,Catch 说一切都失败了,没有任何实现。CMAKE (catch2)

add_executable(Catch_tests_run AbstractTests.cpp ShadingTests.cpp)

CMAKE(项目)

cmake_minimum_required(VERSION 3.16)
project(Hexa)

set(CMAKE_CXX_STANDARD 20)

# GLAD is OpenGL library loader.
add_library("glad" "lib/glad/src/glad.c")
include_directories("lib/glad/include")

# SDL2 provides low level controll to keyboard, sound, video, etc.
find_package(SDL2 REQUIRED)
include_directories(Hexa ${SDL2_INCLUDE_DIRS})

add_executable(Hexa main.cpp
                src/ShadingEngine.cpp
                include/ShadingEngine.h
                lib/imgui/imconfig.h
                lib/imgui/imgui.cpp
                lib/imgui/imgui.h
                lib/imgui/imgui_demo.cpp
                lib/imgui/imgui_draw.cpp
                lib/imgui/imgui_internal.h
                lib/imgui/imgui_widgets.cpp
                lib/imgui/imstb_rectpack.h
                lib/imgui/imstb_textedit.h
                lib/imgui/imstb_truetype.h
                lib/imgui/imgui_impl_opengl3.cpp
                lib/imgui/imgui_impl_opengl3.h
                lib/imgui/imgui_impl_sdl.cpp
                lib/imgui/imgui_impl_sdl.h)

target_link_libraries(Hexa "glad")
target_link_libraries(Hexa ${SDL2_LIBRARIES})

add_subdirectory(Catch_tests)
4

1 回答 1

0

我假设您在 test.cpp 中找不到 foo.h。

如果是这种情况,您只需要一个 target_include_directories(Catch_tests_run ${CMAKE_SOURCE_DIR}/include)

这应该使 foo.h 可用。

于 2020-08-11T19:26:21.520 回答