使用特定配置运行项目时出现链接错误

问题描述 投票:0回答:0

我目前在使用具有特定配置的 Premake5.lua 运行我的项目时遇到链接错误问题。

下面是我的Premake5.lua文件中的相关配置:

files { "src/**.cpp", "src/**.hpp" }

但是,当我将配置更改为:

时,一切似乎都正常

files { "**.cpp", "**.hpp" }

谁能解释为什么会这样,我该如何解决这个问题?

这里是完整的配置代码:


-- Include conan generate script
include("conanbuildinfo.premake.lua")
-- Script for cleaning workspace
include("cleanWorkspace.lua")



-- Main Workspace
workspace "ImageEditor"
    -- Import conan generate config
    conan_basic_setup()

    -- Project
    project "ImageEditorApp"
        kind "ConsoleApp"
        language "C++"
        targetdir "bin/%{cfg.buildcfg}"
        objdir "bin/%{cfg.buildcfg}/obj/"
        location "src"
        debugdir "app"

        linkoptions { conan_exelinkflags }

        files { "src/**.cpp", "src/**.hpp" }
        includedirs { "./bindings" }

        filter "configurations:Debug"
        defines { "DEBUG" }
        symbols "On"

        filter "configurations:Release"
        defines { "NDEBUG" }
        optimize "On"
     -- Tests
    project "ImageEditorTest"
        kind "ConsoleApp"
        language "C++"
        targetdir "bin/%{cfg.buildcfg}"
        objdir "bin/%{cfg.buildcfg}/obj/"
        location "tests"
        debugdir "app"
        linkoptions { conan_exelinkflags }
        links { "ImageEditor" }
    
        -- Add test files
        files { "tests/*.cpp" }
        includedirs { "./src","./bindings" }

        -- We can also configure Catch through defines
        defines "CATCH_CPP11_OR_GREATER"

        filter "configurations:Debug"
            defines { "DEBUG" }
            symbols "On"

        filter "configurations:Release"
            defines { "NDEBUG" }
            optimize "On"

和我的文件夹结构:

.gitignore
|   cleanWorkspace.lua
|   conan.lock
|   conanbuildinfo.premake.lua
|   conanbuildinfo.txt
|   conanfile.txt
|   conaninfo.txt
|   conan_imports_manifest.txt
|   graph_info.json
|   ImageEditor.sln
|   LICENSE
|   Makefile
|   premake5.lua
|   README.md
|
+---app
|       Catch2.dll
|       Catch2Main.dll
|       glew32.dll
|       glfw3.dll
|       imgui.dll
|       imgui.ini
|
+---bin
|   \---Debug
|       |   ImageEditorApp.pdb
|       |
|       \---obj
|           \---Debug
|               \---ImageEditorApp
|                   |   ImageEditorApp.exe.recipe
|                   |   ImageEditorApp.log
|                   |   imgui_impl_glfw.obj
|                   |   imgui_impl_opengl3.obj
|                   |   main.obj
|                   |   test_window.obj
|                   |   vc143.idb
|                   |   vc143.pdb
|                   |   Window.obj
|                   |
|                   \---ImageEditorApp.tlog
|                           CL.command.1.tlog
|                           CL.read.1.tlog
|                           CL.write.1.tlog
|                           ImageEditorApp.lastbuildstate
|                           link-cvtres.read.1.tlog
|                           link-cvtres.write.1.tlog
|                           link-rc.read.1.tlog
|                           link-rc.write.1.tlog
|                           link.32112-cvtres.read.1.tlog
|                           link.32112-cvtres.write.1.tlog
|                           link.32112-rc.read.1.tlog
|                           link.32112-rc.write.1.tlog
|                           link.32112.read.1.tlog
|                           link.32112.read.2.tlog
|                           link.32112.write.1.tlog
|                           link.command.1.tlog
|                           link.read.1.tlog
|                           link.read.2.tlog
|                           link.write.1.tlog
|                           unsuccessfulbuild
|
+---bindings
|       imgui_impl_glfw.cpp
|       imgui_impl_glfw.h
|       imgui_impl_opengl3.cpp
|       imgui_impl_opengl3.h
|       imgui_impl_opengl3_loader.h
|
+---src
|   |   ImageEditorApp.vcxproj
|   |   ImageEditorApp.vcxproj.filters
|   |   ImageEditorApp.vcxproj.user
|   |   main.cpp
|   |
|   \---view
|           Window.cpp
|           Window.h
|
+---tests
|       ImageEditorTest.vcxproj
|       ImageEditorTest.vcxproj.user
|       test_window.cpp
|
\---vendor
    \---premake
            premake5.exe
            premake5.LICENSE.txt

编辑 我对这些很陌生,如果有人可以提供信息,这个设置应该如何寻找管理项目并为它创建单元测试,我会 aprritate 它。谢谢。

c++ testing linker-errors conan premake
© www.soinside.com 2019 - 2024. All rights reserved.