LINUX.ORG.RU

[cmake] Основы

 


0

1

Не могу понять его логику даже на простых вещах. Толковой информации в инете нету. В CMakeList файлах порылся, но больше запутался // с makefile'ами было все понятно :(

Как сделать во-первых простое:

Есть

src/print.h, src/print.cpp, src/MakeLists.txt
и
main.cpp MakeLists.txt

что в MakeLists-ах писать, для сборки.

2. Как подрубать правильно либы?

3. Есть ли что-нибудь хорошего напочитать?

★★★★★

> Есть ли что-нибудь хорошего напочитать?

man cmake

Manhunt ★★★★★
()
Ответ на: комментарий от Zodd

target_link_libraries можно использовать для указания, какие внешние библиотеки надо слинковывать с целью. Это уже ответ на «Как подрубать правильно либы?». Для сборки бинарника в описанном случае (и пусть он ещё должен с -lm и -lastral линковаться, например) напиши в корневом CMakeLists.txt

project(someproject)
add_executable(some_project_binary main.cpp src/print.cpp
target_link_libraries(some_project_binary m astral)
Сделай cmake --help-html cmake_help.html - и получишь справку cmake в одном файле, её можно использовать как справочник.

tim239 ★★
()
Ответ на: комментарий от tim239

Я извиняюсь, забыл закрывающую скобку во второй строке CMakeLists.txt

tim239 ★★
()
Ответ на: комментарий от Kosyak

Но это если по умному.

Например:

FIND_PACKAGE(SDL REQUIRED)
INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR})
........
ADD_EXECUTABLE(XYZ .......)
TARGET_LINK_LIBRARY(XYZ ${SDL_LIBRARY})

Kosyak ★★★★
()
Ответ на: комментарий от Reset

Спасибо. Теперь вроде понял.

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Zodd

Проверь, что файлы называются именно CMakeLists.txt, а не MakeLists.txt. Кроме того, здесь не телепаты - если «не хочет», то что это значит? Какие команды ты пробовал и что cmake выводил в ответ?

tim239 ★★
()
Ответ на: комментарий от Reset

Что ж такое, все забывают скобку после add_executable =)

tim239 ★★
()
Ответ на: комментарий от tim239
CMakeFiles/p1.dir/main.o: In function `main':
main.cpp:(.text+0x5): undefined reference to `Print()'
collect2: выполнение ld завершилось с кодом возврата 1

Если сделать как было предложено.

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Kosyak

Нет. Не видит походу. Счас покурю над ним.

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Reset

В ходе изучении попробовал собрать свою прогу с grpof. Добавил

SET(CMAKE_CXX_FLAGS  "-g -pg")
SET(CMAKE_EXE_LINKER "-pg")

Не создается gmon.out. Я что-то забыл?

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Reset

Все заработало. Спасибо.

Zodd ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.