cmake: изменение команды компоновщика - PullRequest
0 голосов
/ 13 ноября 2010

Это, вероятно, очень легко, когда вы знаете, как, но я не знаю :)

Я пытаюсь создать некоторый код, который использует opengl / glut.Я использую Cygwin-версию cmake opengl и т. Д. Единственная ссылка, которую я вижу на opengl / gult, находится в CMakeLists.txt:

find_package(OpenGL REQUIRED)
find_package(GLU REQUIRED)
find_package(GLUT REQUIRED)

Все работает до стадии связывания, которая заканчивается:

CMakeFiles/glview.dir/glview.c.o: In function `DrawGLScene': /cygdrive/C/code/libfreenect/examples/glview.c:88: undefined reference to `__imp__glutSwapBuffers@0'
CMakeFiles/glview.dir/glview.c.o: In function `keyPressed': /cygdrive/C/code/libfreenect/examples/glview.c:96: undefined reference to `__imp
etc.

После того, как я прибегнул к поиску, я понял это, потому что cmake отбрасывает компоновщику флаг -lglut, тогда как он должен поменять его флагом -lgut32.Выполнив вручную команду связывания, я могу заставить программу собрать:

/usr/bin/gcc.exe  -Wall -O3 -g  -Wl,--enable-auto-import CMakeFiles/glview.dir/glview.c.o  -o glview.exe -Wl,--out-implib,libglview.dll.a -Wl,--major-image-version,0,--minor-image-version,0  -L/cygdrive/C/code/libfreenect/lib ../lib/libfreenect.a -lGL -lGLU -lglut32 -lm -lpthread -lusb-1.0

Но я не могу понять, как заставить cmake сгенерировать эту команду для меня, поэтому никаких ручных шагов не требуется.Любые идеи, что я должен делать?

Приветствия,

Роб

1 Ответ

1 голос
/ 13 ноября 2010

вот как добавить библиотеки для ссылки на:

target_link_libraries( ${TargetName} gut32 )

find_package только гарантирует, что пакет найден, не более.

...