cmake mit ncurses in c++

musv

Aktiver NGBler
Registriert
15 Juli 2013
Beiträge
3.145
Ort
/dev/null
Guten Mittag,

ich versuch mich grad an den ersten Schritte in C++ mit NCurses. Als Buildsystem kommt CMake zum Einsatz.

Jetzt hab ich diesen Link hier probiert:

Oder der Teil meiner CMakeLists.txt
Code:
Expand Collapse Copy
find_package (PkgConfig REQUIRED)
pkg_check_modules ( ncurses++ REQUIRED ncurses++ )
...
target_link_libraries(${PROJECT_NAME} ${ncurses++_LIBRARIES})


Lass ich dann cmake durchlaufen, sieht das so aus:
Code:
Expand Collapse Copy
cmake ..
-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
Musicopy Version: 0.1
CMAKE_SOURCE_DIR: /home/sm/Programmierung/Musicopy
CMAKE_BINARY_DIR: /home/sm/Programmierung/Musicopy/build
EXECUTABLE_OUTPUT_PATH: /home/sm/Programmierung/Musicopy/bin
LIBRARY_OUTPUT_PATH: /home/sm/Programmierung/Musicopy/bin
[COLOR="#00FF00"]-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- checking for module 'ncurses++'
--   found ncurses++, version 5.9.20110404[/COLOR]
PROJECT_SOURCE_DIR: /home/sm/Programmierung/Musicopy/src
PROJECT_INCLUDE_DIR: /home/sm/Programmierung/Musicopy/include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sm/Programmierung/Musicopy/build
Ist also noch alles in Butter.

make scheitert dann aber beim Linken:
Code:
Expand Collapse Copy
make 
Scanning dependencies of target Musicopy
[ 33%] Building CXX object CMakeFiles/Musicopy.dir/src/main.cpp.o
[ 66%] Building CXX object CMakeFiles/Musicopy.dir/src/dir_reader.cpp.o
[100%] Building CXX object CMakeFiles/Musicopy.dir/src/config_handler.cpp.o
Linking CXX executable ../bin/Musicopy
[COLOR="#FF0000"]/usr/bin/ld: cannot find -lncurses++w[/COLOR]
collect2: Fehler: ld gab 1 als Ende-Status zurück
CMakeFiles/Musicopy.dir/build.make:135: recipe for target '../bin/Musicopy' failed
make[2]: *** [../bin/Musicopy] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/Musicopy.dir/all' failed
make[1]: *** [CMakeFiles/Musicopy.dir/all] Error 2
Makefile:76: recipe for target 'all' failed
make: *** [all] Error 2
Er findet ncurses++w nicht.

Jetzt hab ich einfach mal die '++' aus der CMakeLists.txt rausgenommen, d.h.
Code:
Expand Collapse Copy
find_package (PkgConfig REQUIRED)
pkg_check_modules ( ncurses++ REQUIRED ncurses++ )
...
target_link_libraries(${PROJECT_NAME} ${ncurses++_LIBRARIES})

cmake
Code:
Expand Collapse Copy
Musicopy Version: 0.1
CMAKE_SOURCE_DIR: /home/sm/Programmierung/Musicopy
CMAKE_BINARY_DIR: /home/sm/Programmierung/Musicopy/build
EXECUTABLE_OUTPUT_PATH: /home/sm/Programmierung/Musicopy/bin
LIBRARY_OUTPUT_PATH: /home/sm/Programmierung/Musicopy/bin
[COLOR="#00FF00"]-- checking for module 'ncurses'
--   found ncurses, version 5.9.20110404[/COLOR]
PROJECT_SOURCE_DIR: /home/sm/Programmierung/Musicopy/src
PROJECT_INCLUDE_DIR: /home/sm/Programmierung/Musicopy/include
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sm/Programmierung/Musicopy/build

make
Code:
Expand Collapse Copy
Linking CXX executable ../bin/Musicopy
[100%] Built target Musicopy

Warum?

Also was ist jetzt bei ncurses++ anders als bei ncurses, obwohl das offenbar im gleichen Paket
Code:
Expand Collapse Copy
Name           : ncurses
Version              : 5.9-6
Beschreibung         : System V Release 4.0 curses emulation library
Architektur          : x86_64
mitgeliefert wird.

Code:
Expand Collapse Copy
pkg-config --libs ncurses++
-lncurses++w -lpanelw -lmenuw -lformw -lncursesw

locate meint:
Code:
Expand Collapse Copy
locate ncurses
/usr/bin/ncursesw5-config
/usr/include/ncurses.h
/usr/include/ncurses_dll.h
/usr/lib/libncurses.so
/usr/lib/libncurses.so.5
/usr/lib/libncurses.so.5.9
/usr/lib/libncursesw.so
/usr/lib/libncursesw.so.5
/usr/lib/libncursesw.so.5.9
/usr/lib/pkgconfig/ncurses++.pc
/usr/lib/pkgconfig/ncurses++w.pc
/usr/lib/pkgconfig/ncurses.pc
/usr/lib/pkgconfig/ncursesw.pc
/usr/share/licenses/ncurses
/usr/share/licenses/ncurses/license.txt
/usr/share/man/man1/ncursesw5-config.1.gz
/usr/share/man/man3/ncurses.3x.gz

Also was ist jetzt an ncurses++ anders? Brauch ich das für mein C++-Programm? Im Paketmanager hab ich keine gesonderte ncurses++ gefunden. Ich bin auf dem Gebiet noch irgendwie ziemlich leer im Kopf.
 
Zurück
Oben