首页 > 解决方案 > CMake,MinGW=未定义对 GetIpAddrTable-> iphlpapi.h 的引用

问题描述

我有一个在 Linux 中运行良好的 CMake 项目,但在 Windows 下却不行。第一个问题来自最终链接:

[100%] Linking CXX shared library libProjlib.dll
CMakeFiles\Projlib.dir/objects.a(configserver.cpp.obj): In function `ConfigServer::findAdapter(unsigned long*)':
C:/Users/jose/Documents/git-Projects/Proj/Projlib/configserver.cpp:859: undefined reference to `GetIpAddrTable'
Error 1

findAdapter 属于 C:\Qt\Tools\mingw810_64\x86_64-w64-mingw32\include\iphlpapi.h,但不自动链接

我认为我的项目配置错误。我想选择MinGW编译器,自动通过CMakeLists.txt(目前我配置编译器是指cmake-gui.exe ..),自然能解决问题,但不知道怎么弄。(谷歌没有给我解决方案)

请,任何帮助或建议,链接..等都会受到欢迎。

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.13)
set(CMAKE_PROJECT_NAME "testProject")
project(${CMAKE_PROJECT_NAME})

set(CMAKE_BUILD_TYPE Debug)

if("Windows" STREQUAL "${CMAKE_SYSTEM_NAME}")
    message(STATUS "_______________________________________Compiling on Windows")

elseif("Linux" STREQUAL "${CMAKE_SYSTEM_NAME}")
    message(STATUS "_______________________________________Compiling on GNU/Linux :-)")
endif()


set(CMAKE_BUILD_PARALLEL_LEVEL 8)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

#list(APPEND CMAKE_PREFIX_PATH "/home/enigma/Qt/5.15.2/gcc_64") #linux
list(APPEND CMAKE_PREFIX_PATH "C:\\Qt\\Tools\\mingw810_64")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON) 
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

message(STATUS "___________________________________________________${CMAKE_BUILD_TYPE}")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(binPath "binDebugProj")
elseif()
    set(binPath "binProj")  
endif()

set(TMP_BUILD "tmpBuild")
set(Proj_LIB "Projlib")


add_subdirectory(${Proj_LIB} "${CMAKE_SOURCE_DIR}/../${binPath}/${TMP_BUILD}/${Proj_LIB}")
include_directories(${Proj_LIB})

标签: c++windowsqtcmakemingw

解决方案


解决方案是: target_link_libraries(${CARDEA_LIB} PUBLIC Qt5::Core Qt5::Network iphlpapi)

最后确实奏效了。(我在另一个 CMakeLists.txt AGGHH 中节省了时间,今天的时间太长了)


推荐阅读