一点一点学写Makefile(5)-获取文件所在路径

我们在开发一套代码时,应该保证工程放到任何一个目录中均可以编译成功,但是有时候链接库的时候会造成编译错误,本次就会告诉大家如何动态的获得工程所在的绝对路径

代码下载目录 选择Makefile-5

[sql] view plain copy

  1. //makefile
  2. CROSS =
  3. CC = $(CROSS)gcc
  4. CXX = $(CROSS)g++
  5. DEBUG =
  6. CFLAGS = $(DEBUG) -Wall -c
  7. MV = mv -f
  8. RM = rm -rf
  9. LN = ln -sf
  10. TOP_PATH = $(shell pwd)
  11. SRC_PATH = $(TOP_PATH)/src/
  12. BIN_PATH = $(TOP_PATH)/bin/
  13. LIB_PATH = $(TOP_PATH)/lib/
  14. INC_PATH = $(TOP_PATH)/include/
  15. SRCS = $(wildcard $(SRC_PATH)*.cpp)
  16. OBJS = $(patsubst %.cpp, %.o, $(SRCS))
  17. #LIBS += $(LIB_PATH)libconfig.a
  18. LIBS += -lconfig
  19. VERSION = 1.0.0.0
  20. TARGET = adx$(VERSION)
  21. all:$(TARGET)
  22. $(MV) $(TARGET) $(BIN_PATH)
  23. $(LN) $(BIN_PATH)/$(TARGET) $(BIN_PATH)/adx
  24. $(TARGET) : $(OBJS)
  25. $(CXX) $^ -o [email protected] -L$(LIB_PATH) $(LIBS)
  26. $(OBJS):%.o : %.cpp
  27. $(CXX) $(CFLAGS) $< -o [email protected] -I$(INC_PATH)
  28. .PHONY : clean
  29. clean:
  30. $(RM) $(TARGET) $(OBJS)

如上图  TOP_PATH = $(shell pwd) 就可以获取工程所在的绝对目录,其他所有文件夹根据这个目录来获得目录地址。

SRC_PATH = $(TOP_PATH)/src/
BIN_PATH = $(TOP_PATH)/bin/
LIB_PATH = $(TOP_PATH)/lib/
INC_PATH = $(TOP_PATH)/include/
看下面的代码

SRCS = $(wildcard $(SRC_PATH)*.cpp)
OBJS = $(patsubst %.cpp, %.o, $(SRCS))
#LIBS += $(LIB_PATH)libconfig.a
LIBS += -lconfig

这几句就是根据目录获得源文件、目标文件的名字,如果是静态库建议使用#LIBS += $(LIB_PATH)libconfig.a的方式,如果同一个目录中既有静态库又有动态库,系统有限选择动态库,请注意这点。

时间: 2024-11-01 06:42:20

一点一点学写Makefile(5)-获取文件所在路径的相关文章

HDFS 读取、写入、遍历目录获取文件全路径

1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSystem.get(conf); FSDataInputStream fsin= fs.open(path ); BufferedReader br =null; String line ; try{ br = new BufferedReader(new InputStreamReader(fsin))

jsp和java获取文件或路径

1.如何获得当前文件路径常用:(1).Test.class.getResource("")得到的是当前类FileTest.class文件的URI目录.不包括自己!(2).Test.class.getResource("/")得到的是当前的classpath的绝对URI路径.(3).Thread.currentThread().getContextClassLoader().getResource("")得到的也是当前ClassPath的绝对URI

C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1.选择文件用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;//该值确定是否可以选择多个文件 dialog.Title = "请选择文件夹"; dialog.Filter = "所有文件(*.*)|*.*"; if (dialog.ShowDial

一个获取文件绝对路径的sh

脚本里有个获取文件绝对路径的需求,linux里有个很方便的realpath命令,但是mac下没有,甚至readlink -f也跟linux下的表现不同,所以……直接用pwd算了 #!/bin/bash if [ $# -lt 1 ]; then echo "$0 <FILE_PATH> " exit 0 fi FILE_PATH=$1 cd `dirname $FILE_PATH` echo `pwd`/`basename $FILE_PATH` cd $OLDPWD

获取文件绝对路径最后的文件夹名称

package com.tydic.eshop.action.freemarker; public class DDDDD { /** * @Title: main * @Description: 获取文件绝对路径最后的文件夹名称 * @param @param args 设定文件 * @return void 返回类型 * @throws */ public static void main(String[] args) { String strParentUrl = "E:\\hh_web_

Android获取文件夹路径 /data/data/

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下.所有内部存储中保存的文件在用户卸载应用的时候会被删除. 一. files1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象.2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInput

获取文件path路径中的文件名(是否包含扩展名)

直接看代码吧 #获取文件path路径中文件名(去掉目录路径) sub get_file_basename{ my ($file_path) = @_; my @tmp_arr = split(/[\\|\/]+/,$file_path); my $len = @tmp_arr; if ($len >=2) { return $tmp_arr[-1]; }else{ return $file_path; } } #获取文件path路径中文件名(去掉目录路径,去掉扩展名) sub get_file_

linux C++ 获取文件绝对路径

提供ftp服务时需要获取文件绝对路径,这里记录一下. 1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <limits.h> 4 5 int main(){ 6 const char *file_name = "filename"; 7 char abs_path_buff[PATH_MAX]; 8 9 //获取文件路径, 填充到abs_path_buff 10 //realpath函数返回:

C#路径中获取文件全路径、目录、扩展名、文件名称

常用函数 需要引用System.IO   直接可以调用Path的静态方法 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 6 //获取当前运行程序的目录 7 string fileDir = Environment.CurrentDirectory; 8 Console.WriteLine("当前程序目录:"+fileDir); 9 10 //一个文件目录 11 string filePath = "C: