配置了cmake和调试环境
This commit is contained in:
parent
a2a9067ec5
commit
95b0f685ff
|
|
@ -32,3 +32,5 @@
|
|||
*.out
|
||||
*.app
|
||||
|
||||
lib/
|
||||
build/
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "picard_cpp",
|
||||
"preLaunchTask": "BuildDebug",
|
||||
// "preLaunchTask": "BuildRelease",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceRoot}/build/bin/picard_cpp",
|
||||
"args": [
|
||||
"MarkDuplicates"
|
||||
],
|
||||
"cwd": "${workspaceFolder}", // 当前工作路径:当前文件所在的工作空间
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"files.associations": {
|
||||
"cstring": "cpp"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||
// for the documentation about the tasks.json format
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "BuildDebug",
|
||||
"type": "shell",
|
||||
"command": "cd build; cmake .. -DCMAKE_BUILD_TYPE=Debug; make -j 8",
|
||||
"problemMatcher": [],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "BuildRelease",
|
||||
"type": "shell",
|
||||
"command": "cd build; cmake .. -DCMAKE_BUILD_TYPE=Release; make -j 8",
|
||||
"problemMatcher": [],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
|
||||
project(picard_cpp)
|
||||
ADD_SUBDIRECTORY(src)
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# 生成程序的位置
|
||||
SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin")
|
||||
|
||||
# 源码目录
|
||||
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src MAIN_SRC)
|
||||
# AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/common COMMON)
|
||||
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/sam SAM_SRC)
|
||||
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/sam/markdups SAM_MARKDUPS_SRC)
|
||||
|
||||
# 头文件目录
|
||||
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src")
|
||||
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib")
|
||||
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib/htslib")
|
||||
|
||||
# 链接库位置
|
||||
LINK_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib/htslib")
|
||||
|
||||
# 编译生成的程序名称
|
||||
set(PG_NAME "picard_cpp")
|
||||
|
||||
# 为程序添加依赖关系
|
||||
ADD_EXECUTABLE(${PG_NAME} ${MAIN_SRC} ${SAM_SRC} ${SAM_MARKDUPS_SRC})
|
||||
|
||||
# 链接库
|
||||
TARGET_LINK_LIBRARIES(${PG_NAME} libhts.a)
|
||||
|
||||
# 检测系统是否包含必需的库
|
||||
find_package(Threads REQUIRED)
|
||||
if(THREADS_HAVE_PTHREAD_ARG)
|
||||
set_property(TARGET ${PG_NAME} PROPERTY COMPILE_OPTIONS "-pthread")
|
||||
set_property(TARGET ${PG_NAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||
endif()
|
||||
if(CMAKE_THREAD_LIBS_INIT)
|
||||
TARGET_LINK_LIBRARIES(${PG_NAME} "${CMAKE_THREAD_LIBS_INIT}")
|
||||
endif()
|
||||
60
src/main.cpp
60
src/main.cpp
|
|
@ -0,0 +1,60 @@
|
|||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <htslib/sam.h>
|
||||
#include "module.h"
|
||||
|
||||
/* 版本信息 */
|
||||
const char *version()
|
||||
{
|
||||
return PICARD_CPP_VERSION;
|
||||
}
|
||||
|
||||
/* 使用说明 */
|
||||
static void usage(FILE *fp)
|
||||
{
|
||||
fprintf(fp,
|
||||
"\n"
|
||||
"Program: picard_cpp (A cpp implementation for picard.)\n"
|
||||
"Version: %s \n\n",
|
||||
version());
|
||||
fprintf(fp,
|
||||
"Usage: picard_cpp <command> [options]\n"
|
||||
"\n"
|
||||
"Commands:\n"
|
||||
" MarkDuplicates mark duplicates for bam file.\n"
|
||||
"\n");
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
usage(stderr);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (strcmp(argv[1], "help") == 0 || strcmp(argv[1], "--help") == 0)
|
||||
{
|
||||
if (argc == 2)
|
||||
{
|
||||
usage(stdout);
|
||||
return 0;
|
||||
}
|
||||
argv++;
|
||||
argc = 2;
|
||||
}
|
||||
|
||||
int ret = -1;
|
||||
|
||||
if (strcmp(argv[1], "MarkDuplicates") == 0)
|
||||
ret = MarkDuplicates(argc - 1, argv + 1);
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "\n[Error]: unrecognized command '%s'\n\n", argv[1]);
|
||||
usage(stdout);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
16
src/module.h
16
src/module.h
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
Description: picard中各种方法模块函数的前向声明
|
||||
|
||||
Copyright : All right reserved by NCIC.ICT
|
||||
|
||||
Author : Zhang Zhonghai
|
||||
Date : 2023/10/23
|
||||
*/
|
||||
#ifndef MODULE_H_
|
||||
#define MODULE_H_
|
||||
|
||||
#define PICARD_CPP_VERSION "v0.1"
|
||||
|
||||
int MarkDuplicates(int argc, char *argv[]);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
Description: 标记bam文件中的冗余信息
|
||||
|
||||
Copyright : All right reserved by ICT
|
||||
|
||||
Author : Zhang Zhonghai
|
||||
Date : 2023/10/23
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
/*
|
||||
* mark duplicate 入口
|
||||
*/
|
||||
int MarkDuplicates(int argc, char *argv[])
|
||||
{
|
||||
cout << argc << endl;
|
||||
for (int i = 0; i < argc; ++i) {
|
||||
cout << argv[i] << '\t';
|
||||
}
|
||||
cout << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue