Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Instalatii sanitare

Program de slabire cu succes gara...

Reconditionare cada baie din fonta

Problema imprimanta
 Here goes nothing

BCR sau Raiffeisen

Visual Studio 2022 instaleaza Epi...

Sfat alegere parbriz
 EMAG - recenzii false facute de ei?

Recomandare telefon 900-950

Nivel de trai

Semnal bun da'... prost
 De ce statiile de radio FM nu ren...

Pe unde pot sa gasesc statistici ...

Este reconditionat acest laptop?

Prelungire fire electrice
 

Cum compilez un proiect SConstruct?

- - - - -
  • Please log in to reply
7 replies to this topic

#1
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,611
  • Înscris: 06.03.2016
Salut! Am găsit o clonă a unui joc scris în C++ și aș dori să o compilez. Am instalat libraria "scons" in Python, insa cand rulez comanda in directorul prinicipal primesc eroare asta:
KeyError: 'TERM':
  File "D:\ChickenInvaders\SConstruct", line 53:
	env['ENV']['TERM'] = os.environ['TERM']
  File "C:\Python27\Scripts\..\lib\os.py", line 425:
	return self.data[key.upper()]


Am șters
env['ENV']['TERM'] = os.environ['TERM']

însă primesc alte erori.

Știe cineva cum se poate compila tipul aceasta de proiect?

Link catre codul sursă: http://www120.zippys...FZswq/file.html

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,269
  • Înscris: 24.02.2007
Ai TERM setat ca environment variable? Posibil build scriptul sa fie tintit spre Linux/Unix like.

Probabil e mai usor sa improvizezi creand un proiect C++ in Visual Studio si aruncand in el toate sursele/headerele. Grija si la ce dependinte mai are, va trebui probabil sa le compilezi si pe ele separat (cel mai simplu daca folosesc CMake sau iti dau direct solutie VS, asta mai rar).

#3
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,611
  • Înscris: 06.03.2016
Am șters până la urmă variabilele pentru Linux, iar scriptul arată așa:
import fnmatch
import os
def FindFiles(directory, mask):
	files = []
	for root, dirnames, filenames in os.walk(directory):
		for filename in fnmatch.filter(filenames, mask):
			if not filename.startswith('_test_'):
				files.append(os.path.join(root, filename))
	return files
TARGET_FILE_NAME = 'chickeninvaders'
TARGET_FILE_EXT = ''
AddOption('--c++11',
		  dest='c++11',
		  action='store_true',
		  help='use c++11')
USE_CPP11 = GetOption('c++11')
env = Environment()
if 'CXX' in os.environ:
	env['CXX'] = os.environ['CXX']
if 'CCFLAGS' in os.environ:
	env['CCFLAGS'] = os.environ['CCFLAGS']
libs = ['tinyxml', 'boost_chrono', 'boost_system', 'boost_thread']
if 'mingw' in env['CXX']:
	libs += ['glu32', 'glew32', 'opengl32', 'gdi32', 'winmm', 'OpenAL32.dll',
			 'sndfile']
	TARGET_FILE_EXT = '.exe'
# Используем кэш, чтобы Scons не разбирал исходники для определения зависимостей
# при каждой сборке
#env.SetOption('implicit_cache', 1)
AddOption('--mode',
		  dest='mode',
		  type='string',
		  nargs=1,
		  help='build mode',
		  default='release')
modecfg = {
			'release': {
				'flags': ['-O3'],
				'defines': ['NDEBUG']
			},
			'debug': {
				'flags': ['-g3', '-O0'],
				'defines': ['DEBUG']
			}
		}.get(GetOption('mode'))
if not modecfg:
	raise Exception('Unknown build mode: "%s"' % GetOption('mode'))
env.Append(CCFLAGS=['-I.', '-DUSE_BOOST_CHRONO',
					'-DBOOST_SP_DISABLE_THREADS', '-DTIXML_USE_STL',
					modecfg['flags']])
if USE_CPP11:
	env.Append(CCFLAGS=['--std=c++11', '-DCPP11'])
env.Append(CPPDEFINES=[modecfg['defines']])
env.Program(target=TARGET_FILE_NAME + TARGET_FILE_EXT,
			source=FindFiles('.', '*.cpp'),
			LIBS=libs, CPPPath='.')


Problema este că primesc o grămadă de erori de la boost:

Quote

.\boost/type_traits/make_signed.hpp(31): warning C4003: not enough actual parameters for macro 'static_assert'
.\boost/type_traits/make_signed.hpp(32): warning C4003: not enough actual parameters for macro 'static_assert'
.\boost/type_traits/make_signed.hpp(31): warning C4346: 'boost::is_enum<T>::value': dependent name is not a type
.\boost/type_traits/make_signed.hpp(31): note: prefix with 'typename' to indicate a type
.\boost/type_traits/make_signed.hpp(126): note: see reference to class template instantiation 'boost::make_signed<T>' being compiled
.\boost/type_traits/make_signed.hpp(31): error C2059: syntax error: ','
.\boost/type_traits/make_signed.hpp(31): error C2238: unexpected token(s) preceding ';'
.\boost/type_traits/make_signed.hpp(32): warning C4346: 'boost::is_same<remove_cv<T>::type,bool>::value': dependent name is not a type
.\boost/type_traits/make_signed.hpp(32): note: prefix with 'typename' to indicate a type
.\boost/type_traits/make_signed.hpp(32): error C2059: syntax error: ','
.\boost/type_traits/make_signed.hpp(32): error C2238: unexpected token(s) preceding ';'
.\boost/type_traits/make_unsigned.hpp(31): warning C4003: not enough actual parameters for macro 'static_assert'
.\boost/type_traits/make_unsigned.hpp(32): warning C4003: not enough actual parameters for macro 'static_assert'
.\boost/type_traits/make_unsigned.hpp(31): warning C4346: 'boost::is_enum<T>::value': dependent name is not a type
.\boost/type_traits/make_unsigned.hpp(31): note: prefix with 'typename' to indicate a type
.\boost/type_traits/make_unsigned.hpp(125): note: see reference to class template instantiation 'boost::make_unsigned<T>' being compiled
.\boost/type_traits/make_unsigned.hpp(31): error C2059: syntax error: ','
.\boost/type_traits/make_unsigned.hpp(31): error C2238: unexpected token(s) preceding ';'
.\boost/type_traits/make_unsigned.hpp(32): warning C4346: 'boost::is_same<remove_cv<T>::type,bool>::value': dependent name is not a type
.\boost/type_traits/make_unsigned.hpp(32): note: prefix with 'typename' to indicate a type
.\boost/type_traits/make_unsigned.hpp(32): error C2059: syntax error: ','
.\boost/type_traits/make_unsigned.hpp(32): error C2238: unexpected token(s) preceding ';'
.\boost/move/detail/type_traits.hpp(1053): error C2061: syntax error: identifier 'Align'
.\boost/move/detail/type_traits.hpp(1065): note: see reference to class template instantiation 'boost::move_detail::aligned_storage<Len,Align>' being compiled
.\boost/move/detail/type_traits.hpp(1053): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\boost/move/detail/type_traits.hpp(1053): warning C4183: 'BOOST_STATIC_ASSERT': missing return type; assumed to be a member function returning 'int'
.\boost/move/detail/type_traits.hpp(1058): error C2061: syntax error: identifier 'value'
.\boost/move/detail/type_traits.hpp(1058): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\boost/move/detail/type_traits.hpp(1058): error C2535: 'int boost::move_detail::aligned_storage<Len,Align>::BOOST_STATIC_ASSERT(void)': member function already defined or declared
.\boost/move/detail/type_traits.hpp(1053): note: see declaration of 'boost::move_detail::aligned_storage<Len,Align>::BOOST_STATIC_ASSERT'
.\boost/move/detail/type_traits.hpp(1058): warning C4183: 'BOOST_STATIC_ASSERT': missing return type; assumed to be a member function returning 'int'
.\boost/move/detail/type_traits.hpp(1059): error C2059: syntax error: '('
.\boost/move/detail/type_traits.hpp(1059): error C2143: syntax error: missing ',' before '=='
.\boost/move/detail/type_traits.hpp(1059): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\boost/move/detail/type_traits.hpp(1059): error C2535: 'int boost::move_detail::aligned_storage<Len,Align>::BOOST_STATIC_ASSERT(void)': member function already defined or declared
.\boost/move/detail/type_traits.hpp(1053): note: see declaration of 'boost::move_detail::aligned_storage<Len,Align>::BOOST_STATIC_ASSERT'
.\boost/move/detail/type_traits.hpp(1059): error C2059: syntax error: '=='
.\boost/move/detail/type_traits.hpp(1059): warning C4183: 'BOOST_STATIC_ASSERT': missing return type; assumed to be a member function returning 'int'
scons: *** [audio\controller_holder.obj] Error 2
scons: building terminated because of errors.


Ce pot face? Pe linux primesc tot erori legate de boost...

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,269
  • Înscris: 24.02.2007
Ce compilator/versiune?
Ai activat C++11? Vad e ca optional in script, lucru usor ciudat fiind deja in 2017

Edited by dani.user, 01 September 2017 - 20:05.


#5
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,611
  • Înscris: 06.03.2016

 dani.user, on 01 septembrie 2017 - 17:50, said:

Ce compilator/versiune?
Ai activat C++11? Vad e ca optional in script, lucru usor ciudat fiind deja in 2017
Acesta este codul sursă: https://sourceforge....EAD/tree/trunk/
Nu prea înțeleg cum funcționează SConstruct și cum determină el uneltele necesare pentru compilare. Spre exemplu, văd că fișierul .exe ar trebui generat doar dacă codul este compilat folosind mingw.

if 'mingw' in env['CXX']:
		libs += ['glu32', 'glew32', 'opengl32', 'gdi32', 'winmm', 'OpenAL32.dll',
						 'sndfile']
		TARGET_FILE_EXT = '.exe'


Quote

Microsoft ® C/C++ Optimizing Compiler Version 19.00.24210 for x86


#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,269
  • Înscris: 24.02.2007
Cine a creat acel makefile nu si-a prea batut capul ca ar vrea unii sa-l compileze pe Windows. Ramane valabila solutia mentionata mai sus: creezi un nou proiect in Visual Studio si bagi toate sursele la gramada.

Vei avea insa nevoie de bibliotecile dependente: boost, openal, sndfile. Incepe prin a le compila pe ele.

#7
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,611
  • Înscris: 06.03.2016

 dani.user, on 02 septembrie 2017 - 19:29, said:

Cine a creat acel makefile nu si-a prea batut capul ca ar vrea unii sa-l compileze pe Windows. Ramane valabila solutia mentionata mai sus: creezi un nou proiect in Visual Studio si bagi toate sursele la gramada.

Vei avea insa nevoie de bibliotecile dependente: boost, openal, sndfile. Incepe prin a le compila pe ele.
VS nu găsește headerele..

edit: am rezolvat problema cu headerele, acum ma apuc sa compilez librariile necesare.

Edited by red46, 02 September 2017 - 20:24.


#8
red46

red46

    Senior Member

  • Grup: Senior Members
  • Posts: 4,611
  • Înscris: 06.03.2016
Primesc aceleași erori de mai sus și în Visual Studio.

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate