J'ai une construction de scons qui utilise une configuration de répertoire simple et commune :
project/
SConstruct
src/
file.cpp
SConscript
include/
namespace/
header.h
Dans file.cpp, j'inclus header.h via #include "namespace/header.h". Ce que je veux faire, c'est simplement ajouter le répertoire d'inclusion à la liste des chemins d'inclusion. Du point de vue des sources (et de SConscript), ce chemin est "../include" mais la commande de compilation contient toujours un chemin invalide pour l'inclusion. J'ai essayé ce qui suit dans le SConscript :
env.Append(CPPPATH = ["#include"])
env.Append(CPPPATH = [Dir("include")])
env.Append(CPPPATH = [os.getcwd() + os.sep + ".." + os.sep + "include"])
env.Append(CPPPATH = ["../include"])
env.Append(CPPPATH = ["#../include"])
dont aucune ne semble fonctionner. Les quatre premières donnent "-Iinclude" alors que la dernière place l'include au niveau du répertoire au-dessus du projet ! Voici le SConscript complet
env = Environment()
import os
target_name = "device"
source_files = Split("""
file.cpp
""")
env.Append(CPPPATH = ["#include", os.environ.get("SYSTEMC_PATH"),
os.environ.get("SYSTEMC_TLM_PATH"), os.environ.get("BOOST_PATH")])
object_list = env.SharedObject(source = source_files)
targetobj = env.SharedLibrary(target = target_name, source = object_list )
Default(targetobj)
Et la SConstruct est juste :
import sys
SConscript('src/SConscript', variant_dir='Release-'+sys.platform, duplicate=0, exports={'MODE':'release'})
SConscript('src/SConscript', variant_dir='Debug-'+sys.platform, duplicate=0, exports={'MODE':'debug'})
J'exécute scons depuis le répertoire où se trouve la SConstruct (c'est-à-dire le répertoire de premier niveau).
J'ai fait quelques recherches et selon la doco de scons, le # est censé dire à scons de générer le chemin à partir du répertoire courant du SConscript (qui est le répertoire src) - je suppose que c'est au lieu du répertoire SConstruct ??? De plus, je ne vois aucune question sur ce problème particulier (sur ce site ou via Google en général), habituellement je me heurte juste à des gens qui demandent scons scripts pour exactement la configuration que j'ai déjà (qui est d'ajouter "include" au CPPPATH).
Vous avez une idée de l'endroit où ça se passe mal ?