C++ 64-битный проект со статической библиотекой PDCurses через CMake от Clion
Недавно я приобрел "curses.h" и создал файл библиотеки PDCurses "pdcurses.a" благодаря: https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-pdcurses пакету. Я также подготовил файлы cmake:
# pdcurses-config.cmake
set(PDCURSES_LIBDIR "${PROJECT_SOURCE_DIR}/lib")
set(PDCURSES_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/src/include")
set(PDCURSES_LIBRARIES "-L${PDCURSES_LIBDIR} -lpdcurses -static -Wall -Werror")
string(STRIP "${PDCURSES_LIBRARIES}" PDCURSES_LIBRARIES)
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MatrixAlgebra)
set(CMAKE_CXX_STANDARD 11)
set(PDCURSES_DIR "${PROJECT_SOURCE_DIR}/cmake")
find_package(PDCURSES REQUIRED)
include_directories(${PDCURSES_INCLUDE_DIRS})
set(SOURCE_FILES src/main.cpp)
add_executable(MatrixAlgebra ${SOURCE_FILES})
target_link_libraries(MatrixAlgebra ${PDCURSES_LIBRARIES})
К сожалению, я не могу связать простой "Hello World!" консольная программа, потому что либо я получаю это:
mingw32 / 7.3.0 /../../../../ x86_64-w64-mingw32 / bin / ld.exe: не удается найти -lpdcurses collect2.exe: ошибка: ld вернул 1 состояние выхода mingw32-make.exe [3]: * [CMakeFiles \ MatrixAlgebra.dir \ build.make: 97: MatrixAlgebra.exe] Ошибка 1 mingw32-make.exe [2]: [CMakeFiles \ Makefile2: 67: CMakeFiles / MatrixAlgebra.dir / all] Ошибка 2 mingw32-make.exe [1]: [CMakeFiles \ Makefile2: 79: CMakeFiles / MatrixAlgebra.dir / rule] Ошибка 2 mingw32-make.exe: * [Makefile: 117: MatrixAlgebra] Ошибка 2
или это (когда я меняю "pdcurses.a" на "libpdcurses.a"):
Процесс завершен с кодом выхода -1073741515 (0xC0000135)
Я просто не знаю, что делать, чтобы все прошло без проблем.
1 ответ
Вы не должны обращаться к target_link_libraries() как к командной строке, чтобы передать его такими параметрами, как -Wall
Я не знаю pdcurses, но когда find_package находит эту библиотеку, вам, вероятно, следует использовать что-то вроде:
target_link_libraries(MatrixAlgebra pdcurses::pdcurses)