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