如何解决Catch2没有看到我的实施文件
我的项目树是:
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)
解决方法
我假设您在test.cpp中找不到foo.h。
如果是这种情况,您只需要一个target_include_directories(Catch_tests_run $ {CMAKE_SOURCE_DIR} / include)
这应该使foo.h可用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。