簡體   English   中英

用於編譯和運行C ++的bash腳本

[英]bash scripts to compile and run C++

我正在嘗試進入C ++,但是因為必須使用冗長的命令在命令行中運行而煩惱所以我想制作一個bash腳本來簡化流程並運行這些命令

#!/bin/bash
if [ "$1" == "start" ]; then
    cd CCPP
    cd HelloWorld
    g++ -Wall -W -Werror main.cpp -o HelloWorldCPP
    ./HelloWorldCPP

但是我之前從未使用過bash,並且從別人的代碼中將它們一起攻擊。 它不起作用,但我不知道為什么我不夠了解。

你最后都缺少fi ,但是你也可以編寫一個這樣的GNU Makefile:

CXX=g++
CXXFLAGS=-Wall
OBJS=main.o
EXECUTABLE=main

all: $(EXECUTABLE)

$(EXECUTABLE): $(OBJS)
        $(CXX) $(CXXFLAGS) $(OBJS) -o $@


clean:
        rm -f $(EXECUTABLE)
        rm -f $(OBJS)

main.o: main.cpp

請注意,這是一個靈活的示例,您可以進一步簡化此操作。 在這里,您可以找到一個非常好的教程來閱讀:

http://mrbook.org/tutorials/make/

但是,我強烈建議學習cmake,因為手動編寫Makefile是痛苦的。

CMakeLists.txt文件可能是這樣的:

add_executable(main main.cpp)

那簡單地說:

mkdir -p build && cd build && cmake ../ && make VERBOSE=1

然后你將以跨平台的方式完成,因為GNU Makefiles僅適用於Unices。 您需要針對Windows等進行調整才能使其正常工作。 cmake幾乎可以在任何需要的地方免費使用,它對本機構建,交叉編譯有適當的支持。

這個論壇還有一個cmake標簽,周圍有幾個人來幫助你。

我使用mrkite的“編輯和編譯”方法,如http://echochamber.me/viewtopic.php?f=11&t=12301中所述

它只需要在頂部使用魔術咒語來聲明它是一個bash文件,然后使用你想要的任何和所有標志調用gcc並設置為從當前文件中讀取。 最后一個神奇的單詞使它停止掃描; 之后,您可以立即運行已編譯的代碼,或執行其他任何操作。

#!/bin/sh
/usr/bin/gcc -xc -o howareyou - <<EVILEOF
#include <stdio.h>
int main()
{
    printf("this is so wrong\n");
}
EVILEOF
./howareyou

@Jongware謝謝! 我第一次看到bitcoin.c正在使用它,但你建議的版本在bash中使用doc-here! 大!

我有點改進了。 現在你可以編譯兩者了

sh program.cpp

g++ program.cpp -o program && ./program

#if 0
#set -e
#process substitution
#ls . | cat EQUALS cat <(ls .)
#But this does not always work, so we have to use regular one
( cat <<COLLECTDATAMAGICKEYWORD
#line 9
#endif
#include <iostream>
#define COLLECTDATAMAGICKEYWORD
using namespace std;
int main(int argc, char const *argv[])
{
    cout<<(char*)(void)"Hello World"; //Intentionally throws warning so you can see #line 9 works! 
    return 0;
}
COLLECTDATAMAGICKEYWORD
#if 0
) |\
 sed '2d' |\
 sed '1a \ "'"$(echo "${0}" | sed 's#\\#\\\\\\\\#g')"'"' |\
 sed '1N;s#\n##' |\
 g++ -xc++ -o program3 -
./program3
#endif

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM