- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的目录结构是这样的
-Project
|--bin
|--obj/
|--class1
|--class1.h
|--class1.cpp
|--test
|--test-wrapper-class.h
|--test-wrapper-class.cpp
|--main.cpp
我想写一个 Makefile
1) 创建三个目标文件,main.o、class1.o 和test-wrapper-class.o 并将这些文件放在obj 目录中
2) 使用这些目标文件创建将放置在 bin 文件夹中的可执行文件
3) 清除 obj 和 bin 中的所有文件
我知道如何创建目标文件。我见过从位于同一目录中的 cpp 文件创建目标文件的示例,然后将它们全部放在一个 obj 目录中。我不知道该怎么做是
1) 从不同目录中的 cpp 源创建目标文件,将所有目标文件放在与每个源目录不同的目录中
2) 并使用这些目标文件在目标文件和源代码的另一个目录中创建可执行文件。
在当前状态。我的 Makefile 甚至无法完成这项工作。
CXX=g++
INC=-I/home/epi/jfrye_xilinx/SystemC/systemc-2.3.2/include ./test_bench/ ./src/
LIB=-L/home/epi/jfrye_xilinx/SystemC/systemc-2.3.2/lib-linux64
LIBS=-lsystemc
OBJDIR=obj
_OBJS = main.o test_bench.o
OBJS = $(addprefix $(OBJDIR), _OBJS)
all: $(OBJS)
$(CXX) $(OBJS) $(INC) $(LIB) $(LIBS) -o out
$(OBJDIR) obj/%.o : %.cpp test_bench.h
$(CXX) $(OBJS) $(INC) $(LIB) $(LIBS) $< -o $@
我想我非常了解如何包含头文件(库)目录以及如何包含链接器文件。它只是在我不太了解的编译阶段移动文件。
谢谢。
最佳答案
让我们从这个问题的一个简单版本开始:
src/
foo.cpp
bar.cpp
inc/
bar.h
obj/
bin/
我想在obj/
中构建foo.o
和bar.o
,foo.cpp
包括bar.h
(因此 bar.h
应该是 foo.o
和 bar.o
的先决条件>),我想链接这些对象以在 bin/
中构建 app
。
技巧一,使用目标的完整路径名:
SRCDIR := src
INCDIR := inc
OBJDIR := obj
BINDIR := bin
OBJECTS:= $(addprefix $(OBJDIR)/, foo.o bar.o)
bin/app: $(OBJECTS)
$(CXX) $^ -o $@
$(OBJECTS): $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(CXX) -I$(INCDIR) $< -o $@
$(OBJDIR)/foo.o $(OBJDIR)/bar.o: $(INCDIR)/bar.h
现在假设源代码位于多个目录中,例如 class1/
和 test/
:
技巧二,使用vpath找源:
vpath %.cpp src
$(OBJECTS): $(OBJDIR)/%.o: %.cpp
$(CXX) -I$(INCDIR) $< -o $@
不要忘记一个clean
规则:
.PHONY: clean
clean:
@rm -fr $(BINDIR)/* $(OBJDIR)/*
还可以进行其他改进,但这足以让您入门。
关于c++ - Makefile:不同目录下的Cpp文件,目标文件重定向到./obj,可执行文件重定向到./bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47782197/
我创建了一个基于命令行可移植脚本的工业化不可知构建系统,可用于快速构建多个依赖项目,而不必依赖特定的 IDE 或构建工厂。它是不可知的,因为它不是基于单个构建引擎。我使用 cmake 创建了第一个版本
我最初使用 Java 目标开发了一个语法(用于 TestRig 支持),然后将其移植到 Python(从 git hub 语法存储库扩展了 Python3 语法,因此需要将操作移植到 Python
我有一个以 iPhone 和 watchOS 为目标的 Xcode 项目。 iPhone 目标使用加速度计,模拟器不支持。我可以只启动 iPhone 应用程序而不启动 watch 目标吗?我从: Ca
您好,我想创建一个批处理文件,用于在 .eml 文件(目标 A)中查找某些关键字,然后删除它们所在的行。之后,我需要批处理文件将"new"文件放入(目标 B)中的单独 .eml 文件中。文件也可以是
当尝试通过 IntelliJ 运行示例 CorDapp (GitHub CorDapp) 时,我收到以下错误: Cannot inline bytecode built with JVM target
我在尝试向我的 kotlin spring 项目添加一些依赖项时遇到问题。我使用 spring boot 初始化程序来运行一个基本项目。 我的问题:如果我取消对 jackson 或 Koin 依赖项的
这是有问题的网站: http://www.onepixelroom.com/londonrefurb 当我点击关于部分后面的多个圆圈时,我希望它更改上面文本中的引号。 到目前为止,我得到它来显示 文本
单击后,我将删除两个元素 $(this) 和 $("#foo")。 目前我的代码如下所示: $(this).remove(); $("#foo").remove(); 如何在不重复自己的情况下优化它?
我有一个小脚本,可将 Markdown 文件编译为 html,并将其与一些样式表和 javascript 一起插入到模板的主体中。我有一个 GNU makefile 来完成这个: output.htm
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
一些背景知识: 在android中我们开发了同样的应用,基本上我们先开发了Android应用,现在我们创建了它的IOS版本,所以这个应用有多个客户端。在 android 中,我们实际上是使用 Andr
我想知道是否可以使用 knockout 来更改html中的目标() 我的所有其他信息都在 JavaScript 中,所以这对我来说是一个大问题。这是我的 JavaScript: var library
这个问题在这里已经有了答案: Selecting and manipulating CSS pseudo-elements such as ::before and ::after using j
我在我的有向图中添加了一堆节点和顶点,使用设置 typedef boost::adjacency_list graph; 创建 Node有一个节点名称字符串,Edge它的分数有一个整数。我试图遍历所有
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
如何存储我在 NSUserDefaults 中创建的 Goal 类型的对象数组? ( swift ) 代码如下: func saveGoalList ( newGoalList : [Goal] ){
Array.prototype.indexOf 和 Date.now 已在 ES5 中引入。如果我编译存储在文件 test.ts 中的以下代码,为什么 Typescript 不能转译? Date.no
我正在阅读有关属性的内容,并了解到可以使用您的代码将它们应用于不同的目标实体 -(请参阅 Attribute Targets)。 因此,查看我项目中的 AssemblyInfo.cs 文件,我可以看到
给定一个 Makefile: all: build/a build/b build/c # need to change this to all: build/* build/a:
我有一个带有多框架目标的项目- netstandard2.0;net471 . 我想为 netframework 构建解决方案和 netstandard分别。 目前我使用这个 MSBuild 命令:
我是一名优秀的程序员,十分优秀!