我有以下CMakeLists.txt脚本:
# CMake entry point
cmake_minimum_required (VERSION 3.0)
#project name
project (PoorEngine)
#find OpenGL and include it, fail if OpenGl can't be found
find_package(OpenGL REQUIRED)
#create a variable and populate it with source files
set(
SOURCES
${PROJECT_SOURCE_DIR}/Source/main.cpp
)
#create a variable and populate it with headers directories
set(
HEADERS_DIR
${PROJECT_SOURCE_DIR}/ThirdParties/SDL/include
)
#explicit dependency libs
set(
LIBRARIES_DIR
${PROJECT_SOURCE_DIR}/ThirdParties/SDL/Win32/
)
# Add an executable with the above sources
add_executable(${PROJECT_NAME} ${SOURCES})
#include headers directories in the target
target_include_directories(${PROJECT_NAME} PRIVATE ${HEADERS_DIR})
#add explicit dependency to SDL2
find_library(SDL_LIB NAMES SDL2 PATHS ${LIBRARIES_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE ${SDL_LIB})
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy_if_different # which executes "cmake - E copy_if_different..."
${PROJECT_SOURCE_DIR}/ThirdParties/SDL/x64/SDL2.dll # <--this is in-file
$<TARGET_FILE_DIR:${PROJECT_NAME}>
)
我的main.cpp看起来像:
#include <SDL.h>
int main()
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Delay(1000);
SDL_Quit();
return 0;
}
这会引起链接错误:
Error LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) Severity Code Description Project File Line Error LNK1120 1 unresolved externals
如果我使用wmain()代替main(),一切都会好起来,但我想坚持使用main()。我觉得我缺少一些设置,请帮助我。