繁体   English   中英

编译C程序并链接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM