Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: mimars 12 Listopadu 2009, 16:02:30

Název: Problém se závislostmi v C/C++ (použitý config je CMake)
Přispěvatel: mimars 12 Listopadu 2009, 16:02:30
Tak opět zdravím, tohle už je snad jeden z mých posledních dotazů na nějakou dobu:

Dělám si to takhle jednou program v SDL. Jde o to že se hýbe kuličkou po obrazovce, přičemž na kuličku působí gravitace.

Takto vypadá struktura:

headers/global.h
headers/main.h
headers/functions.h

sources/main.cpp
sources/functions.cpp


Závislosti jsou následující:

main.h:

#include <stdio.h>
#include <string.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

functions.h:

#include <stdio.h>
#include <string.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>

global.h:

nemá - zde jsou uloženy globální hodnoty



main.cpp:

#include "../headers/main.h"                 // V souboru main.h není nic důležitého pro ostatní soubory - jen to co je uvedeno výše...
#include "../headers/functions.h"
#include "../headers/global.h"

functions.cpp:

#include "../headers/functions.h"
#include "../headers/global.h"



Všechno by fungovalo, ale je tu jeden problém - pořád mi to píše, že různé proměnné a podobně (hlavně z global.h), jsou duplikátní. Myslím si že je to tím, že se global hodnoty includují do dvou .cpp souborů, ale je to tak nutné (pro tento program). Nevíte někdo co s tím udělat? Předem děkuji za odpovědi.

PS.: Samozřejmě všechny (!!) soubory .h mají ošetřené vkládání pomocí #ifndef, #define a #endif...
Název: Re: Problém se závislostmi v C/C++ (použitý config je CMake)
Přispěvatel: mimars 13 Listopadu 2009, 13:52:47
Ještě sem přidám obsah configu:

Project ( SDL_CMAKE_DEMONSTRATION )

cmake_minimum_required(VERSION 2.6)

set (
   SOURCES
   sources/main.cpp
   sources/functions.cpp
   headers/main.h
   headers/functions.h
   headers/global.h
)

# REQUIRED does not work in CMake <=2.4.6 for SDL
Find_Package ( SDL REQUIRED )
Find_Package ( SDL_image REQUIRED ) # if using SDL_image

# Workaround for the non-working REQUIRED flag
if ( NOT SDL_FOUND )
   message ( FATAL_ERROR "SDL not found!" )
endif ( NOT SDL_FOUND )

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

add_executable (
   application
   ${SOURCES}
)