我是否正确理解如何使用cmake进行链接
cmake_minimum_required(VERSION 3.2)
project(Sdltest)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror -lmingw32 -lSDL2main -lSDL2")
set(SOURCE_FILES main.c)
add_executable(Sdltest ${SOURCE_FILES})
我试图将sdl2链接到我的项目但是我遇到了很多错误。
喜欢 /src/mingw-org-wsl/4.0-dev/src/libcrt/crt/main.c:91:未定义引用`WinMain @ 16&#39; < /强>
当我在cmd上使用gcc时,它会完美地编译
gcc main.c -o test -Wall -Werror -lmingw32 -lSDL2main -lSDL2
顺便说一句,我使用clion 1.0.5
答案 0 :(得分:2)
问题是标志,你混合编译器和链接器标志。首先,这是有问题的,因为在链接时不使用编译器标志,其次因为GNU链接器需要库在命令行上的主源(或对象)文件之后,就像手动构建时一样
您可以使用CMakeLists.txt
文件中的target_link_libraries
命令设置库:
target_link_libraries(Sdltest mingw32 SDL2main SDL2)
此外,您还没有构建C ++项目,您正在构建C项目,因此flags变量应为CMAKE_C_FLAGS
。
最后,如果您想知道CMake在构建时使用的命令和参数,请尝试将VERBOSE
设置为非零,例如。
make VERBOSE=1
我确定可以将该参数添加到CLion。
PS。
如果您想要启用更多警告,可以添加更多标记,例如-Wextra
和-pedantic
。是的,它有时可能会产生误报,特别是在包含来自外部库的头文件时,但我认为在开发时需要处理很多警告而不是很少。