2010-11-13 142 views
0

這可能很容易,當你知道如何,但我沒有:)cmake:改變鏈接器命令

我試圖建立一些代碼,需要使用opengl/glut。我使用cmake的OpenGL等我看到的OpenGL僅供參考的cygwin的版本/ 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 `[email protected]' 
CMakeFiles/glview.dir/glview.c.o: In function `keyPressed': /cygdrive/C/code/libfreenect/examples/glview.c:96: undefined reference to `__imp 
etc. 

谷歌搜索的混帳我想通了這一點,因爲cmake的是feading鏈接一個-lglut標誌,當它應該feading它-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

這是如何添加庫鏈接:

target_link_libraries(${TargetName} gut32) 

find_package只有保證了包被發現,沒有更多的。

+0

已解決,謝謝! – Robert 2010-11-13 17:22:13

+0

我認爲它應該是 target_link_libraries($ {TargetName} $ {GLUT_LIBRARIES} $ {GLU_LIBRARIES} $ {OpenGL_LIBRARIES}) – berkus 2011-03-04 16:34:30

+0

這肯定是可能的;我猜find_package創建了這些變量呢? – stijn 2011-03-04 19:56:47