如何将静态库输出到当前目录以外的另一个目录?
How to ouput the static library into other directory than current?
Following is my directory structure
calculator
|
|---src
(multiply.cpp sum.cpp)
|---lib
I am building a static library calc.a using following
ar -rcs calc.a multiply.o sum.o
calc.a在当前目录下构建。
I trying calc.a to be put into lib folder not in current directory (i.e. src)
我在互联网和手册页中进行了搜索,但没有找到任何内容。
有什么想法吗?
由于您使用的是命令行,将库写入 lib 目录的最简单方法是显式执行:
ar -rcs lib/libcalc.a multiply.o sum.o
使用 Makefile 你可以做更复杂的事情,但即便如此,它归结为同一件事,例如在库名前面加上路径
由于您在评论中要求提供更多信息,我在这里添加一个简单的 Makefile,这可能有助于您入门:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=src/main.cpp src/sum.cpp src/multiply.cpp
OBJECTS=$(SOURCES:.cpp=.o)
LIBRARY=lib/libcalc.a
EXECUTABLE=main
all: $(SOURCES) $(LIBRARY) $(EXECUTABLE)
$(LIBRARY): $(OBJECTS)
<tab>mkdir -p lib
<tab>ar -rcs $@ $<
$(EXECUTABLE): $(OBJECTS)
<tab>$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
<tab>$(CC) $(CFLAGS) $< -o $@
clean:
<tab>rm -rf main lib/ src/*.o
重要提示: 所有 <tab>
必须替换为真正的制表符,这是 Makefile 语法所要求的!
Makefile 非常非常灵活,因此它们可以非常简单并针对您的问题,或者一般 and/or 复杂以基于数百万个源代码构建许多库和二进制文件。我建议您搜索 Makefile 文档以获取更多信息。
最后一点,我还建议您将库重命名为 'libcalc.a',因为 'lib' 前缀在 Unix 中是标准的。其他类似标准适用于其他环境。
Following is my directory structure
calculator
|
|---src
(multiply.cpp sum.cpp)
|---lib
I am building a static library calc.a using following
ar -rcs calc.a multiply.o sum.o
calc.a在当前目录下构建。
I trying calc.a to be put into lib folder not in current directory (i.e. src)
我在互联网和手册页中进行了搜索,但没有找到任何内容。 有什么想法吗?
由于您使用的是命令行,将库写入 lib 目录的最简单方法是显式执行:
ar -rcs lib/libcalc.a multiply.o sum.o
使用 Makefile 你可以做更复杂的事情,但即便如此,它归结为同一件事,例如在库名前面加上路径
由于您在评论中要求提供更多信息,我在这里添加一个简单的 Makefile,这可能有助于您入门:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=src/main.cpp src/sum.cpp src/multiply.cpp
OBJECTS=$(SOURCES:.cpp=.o)
LIBRARY=lib/libcalc.a
EXECUTABLE=main
all: $(SOURCES) $(LIBRARY) $(EXECUTABLE)
$(LIBRARY): $(OBJECTS)
<tab>mkdir -p lib
<tab>ar -rcs $@ $<
$(EXECUTABLE): $(OBJECTS)
<tab>$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
<tab>$(CC) $(CFLAGS) $< -o $@
clean:
<tab>rm -rf main lib/ src/*.o
重要提示: 所有 <tab>
必须替换为真正的制表符,这是 Makefile 语法所要求的!
Makefile 非常非常灵活,因此它们可以非常简单并针对您的问题,或者一般 and/or 复杂以基于数百万个源代码构建许多库和二进制文件。我建议您搜索 Makefile 文档以获取更多信息。
最后一点,我还建议您将库重命名为 'libcalc.a',因为 'lib' 前缀在 Unix 中是标准的。其他类似标准适用于其他环境。