从同一文件夹中读取文件(c ++程序)

时间:2013-05-20 21:10:57

标签: c++ readfile

我有一个绘制地球的程序,它使用以下代码来读取纹理文件:

Images::RGBImage surfaceImage;
surfaceImage=Images::readImageFile("",Vrui::openFile("/home/rodrtu/Desktop/SolarSystem/land_shallow_topo_2048.png"));`

我设置它的方式只适用于我的桌面,但我希望其他人可以访问我的程序文件和图片,并能够让程序在他们的计算机上运行。我应该使用什么,而不是使用"/home/rodrtu/Desktop/SolarSystem/land_shallow_topo_2048.png"

如果我将文件夹添加到与.cpp文件相同的位置,是否应该更改我的makefile? 这是我的makefile

VRUI_MAKEDIR := /opt/local/Vrui-2.6/share/make
ifdef DEBUG
  VRUI_MAKEDIR := $(VRUI_MAKEDIR)/debug
endif

INSTALLDIR := $(shell pwd)

# Set resource directory: I added this images folder to the same place as my 
# .cpp file, but it still doesn't work
RESOURCEDIR = images

########################################################################
########################################################################

# Include definitions for the system environment and system-provided
# packages
include $(VRUI_MAKEDIR)/SystemDefinitions
include $(VRUI_MAKEDIR)/Packages.System
include $(VRUI_MAKEDIR)/Configuration.Vrui
include $(VRUI_MAKEDIR)/Packages.Vrui

# Set installation directory structure:
BININSTALLDIR = $(INSTALLDIR)/$(EXEDIR)
RESOURCEINSTALLDIR = $(INSTALLDIR)/$(RESOURCEDIR)

########################################################################
########################################################################

PACKAGES = MYVRUI

########################################################################
########################################################################

ALL = $(EXEDIR)/NewPlanet   

.PHONY: all
all: $(ALL)

########################################################################
#'make clean'
########################################################################

.PHONY: extraclean
extraclean:

.PHONY: extrasqueakyclean
extrasqueakyclean:

# Include basic makefile
include $(VRUI_MAKEDIR)/BasicMakefile

########################################################################
########################################################################


$(EXEDIR)/NewPlanet: $(OBJDIR)/NewPlanet.o $(OBJDIR)/drawShape.o 

2 个答案:

答案 0 :(得分:0)

您应该使用Beta建议的相对路径。将“data”文件夹放在与可执行文件相同的文件夹上并使用: Vrui::openFile("./data/land_shallow_topo_2048.png")

答案 1 :(得分:0)

文件打开应该相对于程序目录,因此您可以在源目录中为图片创建一个子目录。但请确保让用户知道放置这些图片的位置,

g-dev@g$ mkdir dat
g-dev@g$ mv pic.jpg dat/pic.jpg

然后来源:

::readImageFile("", Vrui::openFile("pic.jpg")

在CMake中添加目录:

include_directories ("${PROJECT_SOURCE_DIR/dat}")

在VS中添加目录:

here

(确保您为文件路径$(ProjectDir)$(SolutionDir)使用提供的MSVS宏)