Hi!

I've got some breakages after switch to CMake 2.6.0, and I'm not
sure how to fix those in a correct way. The app in question is
memonix:

http://www.viewizard.com/download/MemonixSourceCode_1.6_070713.zip

(I'm not related to authors of this software, but CMakeLists.txt
there is by me).

Here's the source:

--- CMakeLists.txt begins here ---
# project name
PROJECT(Memonix)

# depends
set(SDL_CONFIG "sdl-config" CACHE STRING "Path to sdl-config script")

FIND_PACKAGE(OpenGL REQUIRED)
IF(OPENGL_FOUND)
        INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
ELSE(OPENGL_FOUND)
        MESSAGE(FATAL "OpenGL not found")
ENDIF(OPENGL_FOUND)

FIND_PACKAGE(GLU REQUIRED)
FIND_PACKAGE(SDL REQUIRED)
FIND_PACKAGE(SDL_image REQUIRED)
FIND_PACKAGE(SDL_mixer REQUIRED)

# sources
FILE(GLOB_RECURSE memonix_SRCS *.cpp)

# targets
ADD_DEFINITIONS(`${SDL_CONFIG} --cflags`)
ADD_EXECUTABLE(Memonix ${memonix_SRCS})
TARGET_LINK_LIBRARIES(Memonix `${SDL_CONFIG} --libs` ${SDLIMAGE_LIBRARY} 
${SDLMIXER_LIBRARY} ${OPENGL_gl_LIBRARY} ${GLU_LIBRARY})
--- CMakeLists.txt.orig ends here ---

First breakage is caused by using `sdl-config` in libs:

---
Linking CXX executable Memonix
c++: `sdl-config: No such file or directory
---

Obviously, `sdl-config --libs` is counted as two separate arguments.
Changing it to "`sdl-config --libs`" doesn't help.

I've worked that around like this:

---
EXEC_PROGRAM(${SDL_CONFIG} ARGS "--cflags" OUTPUT_VARIABLE SDL_CFLAGS)
EXEC_PROGRAM(${SDL_CONFIG} ARGS "--libs" OUTPUT_VARIABLE SDL_LIBS)

ADD_DEFINITIONS(${SDL_CFLAGS})
ADD_EXECUTABLE(Memonix ${memonix_SRCS})
TARGET_LINK_LIBRARIES(Memonix ${SDL_LIBS} ${SDLIMAGE_LIBRARY} 
${SDLMIXER_LIBRARY} ${OPENGL_gl_LIBRARY} ${GLU_LIBRARY})
---

Seems cleaner but that's more lines as well.

Second breakage is like this:

---
Linking CXX executable Memonix
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/Memonix.dir/link.txt 
--verbose=1
/usr/bin/c++   -O2 -fno-strict-aliasing -pipe -march=nocona  -fPIC  -pthread 
CMakeFiles/Memonix.dir/src/Main.o CMakeFiles/Memonix.dir/src/protect.o 
CMakeFiles/Memonix.dir/src/dialogs.o CMakeFiles/Memonix.dir/src/loading.o 
CMakeFiles/Memonix.dir/src/loop_audio.o 
CMakeFiles/Memonix.dir/src/Core/Texture/Texture.o 
CMakeFiles/Memonix.dir/src/Core/Texture/TextureManager.o 
CMakeFiles/Memonix.dir/src/Core/Texture/Texture_DIB.o 
CMakeFiles/Memonix.dir/src/Core/Math/Matrix33.o 
CMakeFiles/Memonix.dir/src/Core/Math/Matrix44.o 
CMakeFiles/Memonix.dir/src/Core/Math/Math.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_Texture.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_Draw3D.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/RI_Font.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_Draw2D.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_Main.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_Light.o 
CMakeFiles/Memonix.dir/src/Core/RendererInterface/OGL_
 Matrix.o CMakeFiles/Memonix.dir/src/Core/RendererInterface/RI_Int.o 
CMakeFiles/Memonix.dir/src/Core/System/Timer.o 
CMakeFiles/Memonix.dir/src/Core/System/Mouse.o 
CMakeFiles/Memonix.dir/src/Core/System/System.o 
CMakeFiles/Memonix.dir/src/Core/System/Keyboard.o 
CMakeFiles/Memonix.dir/src/Core/VirtualFileSystem/Haff.o 
CMakeFiles/Memonix.dir/src/Core/VirtualFileSystem/VFS.o 
CMakeFiles/Memonix.dir/src/Core/VirtualFileSystem/RLE.o 
CMakeFiles/Memonix.dir/src/game_start.o CMakeFiles/Memonix.dir/src/loop_proc.o 
CMakeFiles/Memonix.dir/src/menu.o CMakeFiles/Memonix.dir/src/game.o 
CMakeFiles/Memonix.dir/src/options.o 
CMakeFiles/Memonix.dir/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.o  -o 
Memonix  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -pthread 
/usr/local/lib/libSDL_image.so /usr/local/lib/libSDL_mixer.so 
/usr/local/lib/libGL.so /usr/local/lib/libGLU.so /usr/local/lib/libGL.so 
/usr/local/lib/libGLU.so /usr/local/lib/libSM.so /usr/local/lib/libICE.so 
/usr/local/lib/libX11.so /u
 sr/local/lib/libXext.so -Wl,-rpath,/usr/local/lib 
CMakeFiles/Memonix.dir/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.o(.text+0x0):
 In function `main':
: multiple definition of `main'
CMakeFiles/Memonix.dir/src/Main.o(.text+0x44): first defined here
/usr/bin/ld: Warning: size of symbol `main' changed from 2288 in 
CMakeFiles/Memonix.dir/src/Main.o to 3 in 
CMakeFiles/Memonix.dir/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.o
*** Error code 1
---

As you can see,
CMakeFiles/Memonix.dir/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.o
gets into project object files (seems like it's because
CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp gets into GLOB_RECURSE.
That's obviously undesired.

-- 
Dmitry A. Marakasov    | jabber: [EMAIL PROTECTED]
[EMAIL PROTECTED]       | http://www.amdmi3.ru
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to