Monday 15 March 2010

c++ - CMake FIND_LIBRARY works on Windows but not OS X -



c++ - CMake FIND_LIBRARY works on Windows but not OS X -

the same code ran on cmake in windows finds libraries, on mac cannot find them.the code finds include directories fine not libraries

here screen of cmake output

and here screen of directory construction

here cmakelists.txt

cmake_minimum_required(version 2.6) project (gamecreatorengine) # version can passed application cmake todo set(cmake_test_version_major 1) set(cmake_test_version_minor 3) # compiler flags add_definitions( -c -w4 ) # sdl lib includes set( sdl2_search_paths ${sdl2_root_dir} ./res/lib/sdl2 ) find_path( sdl2_include_dirs names sdl.h sdl2/sdl.h paths ${sdl2_search_paths} path_suffixes include ) find_library( sdl2 names sdl2.lib paths ${sdl2_search_paths} path_suffixes lib ) find_library( sdl2_main names sdl2main.lib paths ${sdl2_search_paths} path_suffixes lib ) if ( sdl2_include_dirs , sdl2_main , sdl2) set( sdl2_found true ) message(status "looking sdl2 - found") else ( sdl2_include_dirs , sdl2_main , sdl2 ) set( sdl2_found false ) message(status "looking sdl2 - not found") endif ( sdl2_include_dirs , sdl2_main , sdl2 ) # glew lib includes set(glew_search_paths ${glew_root_dir} ./res/lib/glew ) find_path( glew_include_dirs names glew.h paths ${glew_search_paths} path_suffixes include ) find_library( glew_libraries names glew32 paths ${glew_search_paths} path_suffixes lib/release/win32 ) if ( glew_include_dirs , glew_libraries ) set( glew_found true ) message( status "looking glew - found" ) else ( glew_include_dirs , glew_libraries ) set( glew_found false ) message( status "looking glew - not found" ) endif ( glew_include_dirs , glew_libraries ) # assimp set(assimp_search_paths ${assimp_root_dir} ./res/lib/assimp ) find_path( assimp_include_dirs names mesh.h paths ${assimp_search_paths} path_suffixes include ) find_library( assimp_libraries names assimp assimp paths ${assimp_search_paths} path_suffixes lib lib/x86 lib/x64 ) if ( assimp_include_dirs , assimp_libraries ) set( assimp_found true ) message(status "looking assimp - found") else ( assimp_include_dirs , assimp_libraries ) set( assimp_found false ) message(status "looking assimp - not found") endif ( assimp_include_dirs , assimp_libraries ) # glm maths lib set( glm_search_paths ${glm_root_dir} ./res/lib/glm ) find_path( glm_include_dirs names glm.hpp paths ${glm_search_paths} path_suffixes include ) if ( glm_include_dirs) set( glm_found true ) message(status "looking glm - found") else ( glm_include_dirs ) set( assimp_found false ) message(status "looking glm - not found") endif ( glm_include_dirs ) # opengl find_package(opengl required) # gamecreatorlibrary file(glob hdrs ${engine_source_dir}src/*.h) file(glob srcs ${engine_source_dir}src/*.cpp src/*.c) add_executable(gamecreatorengine ${hdrs} ${srcs}) # define include dirs include_directories( ${sdl2_include_dirs} ${glew_include_dirs} ${assimp_include_dirs} ${glm_include_dirs} ${opengl_include_dirs} ${engine_source_dir}/headers ${engine_source_dir}/sources ) # define link libraries target_link_libraries( gamecreatorengine ${sdl2} ${sdl2_main} ${glew_libraries} ${assimp_libraries} ${opengl_libraries} )

the proper filename extension libraries varies on different platforms. while .lib used both static , dll import libraries on windows, os x uses different naming conventions (.a static , .so/.dylib dynamic libraries, perchance lib prefix).

in order still allow code works different naming conventions, find_library expects omit extensions or prefixes , just give bare name of library.

so instead of find_library(sdl2 names sdl2.lib [...]) should write find_library(sdl2 names sdl2 [...]).

from question seems trying link os x build against windows binaries (.lib , .dll file extensions). this not work. need separate set of binaries compiled os x.

c++ cmake cmake-gui

No comments:

Post a Comment