[sCons]使用sCons编译并将编译文件放到build目录下 示例

初学scons编译脚本,直接使用Program进行编译会在main和sum/src目录下生成obj文件,该例子可将生成的obj文件放到build目录下。

项目目录:

│  SConstruct

├─build
├─main
│      main.cpp

└─sum
    ├─inc
    │      dataSum.h
    │
    └─src
            dataSum.cpp

SConstruct:

# SConstruct

# 设置编译器
env = Environment()

# 设置源文件目录和目标文件目录
src_dir = ''
inc_dir = 'sum/inc'
#src_files = ['main/main.cpp', 'sum/src/dataSum.cpp']
obj_dir = 'build/obj'
target = 'build/main'

# 设置编译选项
#env.Append(CXXFLAGS=['-std=c++11', '-Wall'])

# 添加源文件和头文件搜索路径
env.Append(CPPPATH=[inc_dir])

# 编译sum.cpp文件生成sum.o目标文件
env.Object(target=obj_dir+'/sum', source=src_dir+'sum/src/dataSum.cpp')

# 编译main.cpp文件生成main.o目标文件
env.Object(target=obj_dir+'/main', source=src_dir+'main/main.cpp')

# 链接目标文件生成可执行文件
env.Program(target, [obj_dir+'/main', obj_dir+'/sum'])

代码:

main.cpp

#include <iostream>
#include "dataSum.h"
 
int main()
{
    std::cout << "Enter two numbers:" << std::endl;
    int num1, num2;
    std::cin >> num1 >> num2;
    std::cout << "the sum is : " << math_data_sum(num1,num2) << std::endl;
    return 0;
}

dataSum.cpp

#include "dataSum.h"

int math_data_sum(int data1, int data2)
{
    return data1 + data2;
}

dataSum.h

#ifndef _H_DATA_SUM_H_
#define _H_DATA_SUM_H_

int math_data_sum(int data1, int data2);

#endif

编译后的目录:

│  .sconsign.dblite
│  SConstruct
│  sumTest.exe

├─build
│  │  main.exe
│  │
│  └─obj
│          main.obj
│          sum.obj

├─main
│      main.cpp

└─sum
    ├─inc
    │      dataSum.h
    │
    └─src
            dataSum.cpp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值