簡體   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