使无法在 OSX 上找到文件
make can't find files on OSX
我在OSX上使用make和makefile时遇到问题。
我的错误:
clang: error: no such file or directory: '/Users/sduball/Documents/Programming/Cpp/ncurses_projects/tictactoe/source/main.cpp'
clang: error: no input files
make: *** [main.o] Error
- 仅当我使用 make 时才会发生错误
- 我已经多次检查文件路径是否有效(文件确实存在)
- 我已经在OSX上手动运行了g ++命令(并且它起作用了)
- 我一直在我的 Ubuntu 桌面上使用相同的生成文件,非常好
- 这似乎是我的makefile上的变量以某种方式的错误
- 从显示的makefile中,我尝试使程序没有文件配方中的变量,并且可以工作。
- 我试过对我的变量声明使用 :=,但它不起作用
- 我很困惑,因为 clang 作为错误吐出的路径是有效的路径(我已经多次标记出路径并使用 vim 打开了确切的路径并且它有效)
我看到的关于此问题的唯一 SO 帖子是 xcode 项目在手动移动项目后找不到文件。我没有发现与我遇到的这个特定问题有关的任何内容。提前感谢您的帮助。
生成文件
##### VARIABLES #####
CXX = g++
CXXFLAGS = -Wall -g -std=c++14
DIR = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/
SOURCE = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/source/
BUILD = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/build/
##### TARGETS #####
# executable
copy: main.o game.o
$(CXX) $(CXXFLAGS) $(BUILD)main.o $(BUILD)game.o -lncursesw -o $(DIR)copy
# source
main.o: main.cpp game.h
$(CXX) $(CXXFLAGS) -c $(SOURCE)main.cpp -o $(BUILD)main.o
game.o: game.cpp game.h
$(CXX) $(CXXFLAGS) -c $(SOURCE)game.cpp -o $(BUILD)game.o
您需要在目标/依赖项行中使用目录变量,而不仅仅是命令行。
##### VARIABLES #####
CXX = g++
CXXFLAGS = -Wall -g -std=c++14
DIR = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/
SOURCE = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/source/
BUILD = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/build/
##### TARGETS #####
# executable
$(DIR)copy: $(BUILD)main.o $(BUILD)game.o
$(CXX) $(CXXFLAGS) $(BUILD)main.o $(BUILD)game.o -lncursesw -o $(DIR)copy
# source
$(BUILD)main.o: $(SOURCE)main.cpp $(SOURCE)game.h
$(CXX) $(CXXFLAGS) -c $(SOURCE)main.cpp -o $(BUILD)main.o
$(BUILD)game.o: $(SOURCE)game.cpp $(SOURCE)game.h
$(CXX) $(CXXFLAGS) -c $(SOURCE)game.cpp -o $(BUILD)game.o
根据@JonathanLeffler对原始问题的评论,我用 DIR = 替换了 DIR 路径。
DIR = ~/Documents/Programming/Cpp/ncurses_projects/tictactoe/
自
DIR = .
这完全解决了问题。源代码如下。
生成文件
##### VARIABLES #####
CXX = g++
CXXFLAGS = -Wall -g -std=c++14
DIR = .
SOURCE = $(DIR)/source
BUILD = $(DIR)/build
##### TARGETS #####
# executable
copy: $(BUILD)/main.o $(BUILD)/game.o
$(CXX) $(CXXFLAGS) $(BUILD)/main.o $(BUILD)/game.o -lncursesw -o $(DIR)/copy
# source
main.o: $(SOURCE)/main.cpp $(SOURCE)/game.h
$(CXX) $(CXXFLAGS) -c $(SOUCE)/main.cpp -o $(BUILD)/main.o
game.o: $(SOURCE)/game.cpp $(SOURCE)/game.h
$(CXX) $(CXXFLAGS) -c $(SOURCE)/game.cpp -o $(BUILD)/game.o
相关文章:
- OSX clang++:用于 cpp 文件中显式实例化模板的体系结构x86_64的未定义符号
- Xcode OSX上的C++构建失败,出现多个错误文件IO..不可用:在macOS 10.15中引入
- 如何在OSX上正确创建C++对象文件(.o)
- 在OSX中使用CGDisplayStream存储屏幕记录的特定文件路径
- 使无法在 OSX 上找到文件
- C - 在Mac OSX上获取文件路径
- OSX "ld" : 如何显示未解析符号的损坏名称?如何获取地图文件?
- OSX 上的应用程序构建找不到配置文件
- 如何在OSX中打印.so文件的符号列表
- 在OSX上的Objective C或C++中检测文件夹访问(类似于fs_usage命令)
- Boost管理的映射文件:在OSX和Linux之间不兼容
- OSX - x时间后自动删除文件
- Mac OSX:构建opencv_contrib致命错误:找不到文件 opencv2/core.hpp
- Xcode 4 Mavericks 为 OSX 创建通用二进制文件挂起
- 在 OSX 上的核心配置文件上获取可用的 opengl 扩展
- 如何使用 vn_rdwr() API 在 osx 内核扩展中合并两个文件
- std::ifstream 在 Mac OSX 中访问网络文件
- 无法在 OSX 上运行编译的 C++ 可执行文件,适用于 Debian
- 在 OSX 中的 xcode 中查找 glfw 库文件
- 将Node.js+Socket.io封装到OSX可执行文件中的可靠方法?(或C/C++/Objective-C库作为替代