问题描述
我的项目树是:@H_502_1@
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)@H_502_1@
add_executable(Catch_tests_run AbstractTests.cpp ShadingTests.cpp)
CMAKE(项目)@H_502_1@
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)
解决方法
我假设您在test.cpp中找不到foo.h。
如果是这种情况,您只需要一个target_include_directories(Catch_tests_run $ {CMAKE_SOURCE_DIR} / include)
这应该使foo.h可用。