[英]Compiling a C program and linking
我是否正确理解如何使用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”的引用
当我在cmd上使用gcc时,它可以完美编译
gcc main.c -o test -Wall -Werror -lmingw32 -lSDL2main -lSDL2
顺便说一句,我使用clion 1.0.5
问题是标志,您混合了编译器和链接器标志。 首先,这是有问题的,因为在链接时不使用编译器标志,其次是因为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
。 是的,它有时可能会带来误报,尤其是在包含来自外部库的头文件时,但是我认为在开发时必须多加警告而不是少加警告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.