Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 458 Vote(s) - 3.41 Average
  • 1
  • 2
  • 3
  • 4
  • 5
libSDL, CMake and Mac OS X Lion

#1
I'm trying to compile a cmake project on my mac, but it depends on the SDL framework. I installed this framework and after cmake then reported to me libSDL was not found I set following export variables myself (as suggested by cmake):

export SDL_INCLUDE_DIR=/Library/Frameworks/SDL.framework/
export SDLIMAGE_LIBRARY=/Library/Frameworks/SDL_image.framework/
export SDLIMAGE_INCLUDE_DIR=/Library/Frameworks/SDL_image.framework/Headers
Now cmake does it job, but when I run make, I get the following message:

Mats-MBP:build mats$ make
Linking CXX executable SDLExample
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
(maybe you meant: _SDL_main)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make[2]: *** [src/SDLExample] Error 1
make[1]: *** [src/CMakeFiles/SDLExample.dir/all] Error 2
make: *** [all] Error 2

I get this for both i386 and x86_64. What did I forget?

**EDIT:** these are the file contents:

Mats-MBP:build mats$ cat ../src/main.cpp
/**
* @file main.cpp
*
* A simple example-program to help you out with using SDL for 2D graphics.
*
* @author przemek
*/

#include <iostream>
#include <stdexcept>
#include <SDL.h>
#include <SDL_image.h>

using namespace std;

int main(int argc, char* argv[]) {
try {
// Try to initialize SDL (for video)
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
throw runtime_error("Couldn't init SDL video!");
}
// Create a double-buffered screen surface:
SDL_Surface* screen = SDL_SetVideoMode(800, 600, 24, SDL_DOUBLEBUF/* | SDL_FULLSCREEN*/);
if (!screen) {
throw runtime_error("Couldn't set SDL video mode!");
}

// Use SDL_image library to load an image:
SDL_Surface* image = IMG_Load("image.png");
// SDL_Surface* image = IMG_Load("image.tga");
if (!image) {
throw runtime_error(SDL_GetError());
}

// "Pump" SDL events like keyboard presses and get the keystate:
SDL_PumpEvents();
Uint8* keyState = SDL_GetKeyState(0);

// loop until user presses escape:
while (!keyState[SDLK_ESCAPE]) {
// Display a game background:
SDL_Rect src, dst; // Source and destination rectangles
src.x = 0;
src.y = 0;
src.w = image->w;
src.h = image->h;
dst.x = 100;
dst.y = 50;
dst.w = image->w;
dst.h = image->h;
// Copy the image from 'image' to 'screen' surface
SDL_BlitSurface(image, &src, SDL_GetVideoSurface(), &dst);

// Flip surfaces (remember: double-buffering!) and clear the back buffer:
SDL_Flip(screen);
SDL_FillRect(screen, 0, 0);

// Get new keyboard state:
SDL_PumpEvents();
keyState = SDL_GetKeyState(0);
}

// Free the screen surface & quit SDL
SDL_FreeSurface(screen);
SDL_Quit();
} catch (runtime_error& e) {
cout << e.what() << endl;
SDL_Quit();
}

return 0;
}
Reply

#2
As Ramon said, you need to link to SDLmain.lib for many platforms. So have something like this in your CMakeLists.txt file.

link_libraries (
${SDL_LIBRARY}
${SDLIMAGE_LIBRARY} # if using SDL_image, obviously
SDLmain # Sadly not included in SDL_LIBRARY variable
)

Here is a simple page for more information:

[To see links please register here]

Reply

#3
I solved it by removing the .framework and unset my export variables to this framework, and I used the source to ./configure, make, make install. I removed all cmake build files and cmade and made my project again and everything was solved.

(For compiling SDL on OS X Lion you need to `./configure --disable-assembly`)
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through