[使用wxWidgets的项目的cmake链接器配置

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

我有以下问题。我想创建一个使用wxWidgets的跨平台GUI应用程序我正在尝试从wxWidgets网站编译并运行"Hello World" example。我想使用cmake构建项目。在Linux上,一切正常,但在Windows上,我看到以下链接错误

MSVCRTD.lib(exe_main.obj) : error LNK2019: unresolved external symbol main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

看起来链接器由于某种原因正在寻找main函数(它不寻找WinMain吗?)示例代码具有wxIMPLEMENT_APP(MyApp);宏,我还设置了链接器选项set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /subsystem:windows"),但没有任何帮助,因此我不明白问题出在哪里。我感觉自己错过了一些简单的事情。在您的一个项目之前,您可能遇到过类似的问题吗?谢谢您的帮助。

下面给出我的CMakeLists.txt文件

cmake_minimum_required (VERSION 3.8)

project ("project")

set(CMAKE_CXX_STANDARD 17)
set(WXWIN "C:/msys64/wxWidgets")


# =========================================================================
set(BUILD_DEPS ON)
list(APPEND CMAKE_MODULE_PATH "include/libs")

include_directories("include/libs")
add_subdirectory("include/libs/glog")

if (MSVC)
set(wxWidgets_ROOT_DIR ${WXWIN})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /subsystem:windows")
endif (MSVC)

find_package(wxWidgets COMPONENTS net gl core base)
include(${wxWidgets_USE_FILE})
set(wxWidgets_USE_UNICODE ON)

# Create shared library for the project
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
set(PROJECT_LINK_LIBS Tools)
set(LIBRARY_SRC include/Tools.cpp)
add_library(Tools SHARED ${LIBRARY_SRC})
link_directories("out/build")
set_target_properties(Tools PROPERTIES POSITION_INDEPENDENT_CODE 1)
# =========================================================================

# Add source to this project's executable.
add_executable (project "project.cpp" "project.h")
target_compile_features(project PUBLIC cxx_std_17)
target_link_libraries (project ${PROJECT_LINK_LIBS} ${wxWidgets_LIBRARIES})
cmake configuration linker cross-platform wxwidgets
1个回答
0
投票

事实证明,要使其工作,需要将WIN32放入cmake的add_executable命令中add_executable (project "project.cpp" "project.h")=> add_executable (project WIN32 "project.cpp" "project.h")

© www.soinside.com 2019 - 2024. All rights reserved.