У меня есть сборка scons с использованием простой, общей установки каталогов:
project/
SConstruct
src/
file.cpp
SConscript
include/
namespace/
header.h
В file.cpp я включаю header.h через #include "namespace / header.h", поэтому я просто хочу добавить каталог include в список путей включения. С точки зрения источника (и SConscript) этот путь - "../include", но у команды build всегда есть неверный путь для включения в него. Я попробовал следующее в 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"])
ни один из которых, кажется, не работает. Первые четыре дают "-Iinclude", в то время как последние помещают include на уровень каталога над проектом! Вот полный SConscript
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)
А SConstruct просто:
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'})
Я запускаю scons из каталога, в котором находится SConstruct (то есть каталог верхнего уровня).
Я немного посмотрел и, согласно документу scons, # должен сообщать scons генерировать путь из текущего каталога SConscript (который является каталогом src) - я предполагаю, что это вместо каталог SConstruct ??? Кроме того, я не вижу никаких вопросов об этой конкретной проблеме (на этом сайте или через Google в целом), обычно я просто бью людей, спрашивающих скрипты scons для точной настройки, которая у меня уже есть (которая заключается в добавить «включить» в CPPPATH).
Есть какие-нибудь мысли о том, куда все идет не так?