第一步:安裝編譯環境
下載並安裝Visual Studio,本人安裝的Visual Studio 2012
第二步:設置環境變數
1)右鍵「計算機(我的電腦)」,選擇「屬性->高級系統設置->環境變數」,找到「系統變數」中的「PATH"屬性,雙擊之
2)復制Visual Studio安裝目錄下的路徑「D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin」到環境變數中(PATH中已經有其它變數,則粘貼到最後面,並且用英文「;」與前面的變數隔開)
第三步:修改命令行啟動參數
1)在「開始->運行」中輸入「cmd」,開始菜單中將列出"cmd.exe",右鍵它,然後「發送到->發送到桌面快捷方式」
2)右鍵步驟1)中創建的桌面快捷方式,選擇「屬性->快捷方式」,找到「目標(T)」欄,修改目標為「C:\Windows\System32\cmd.exe /k vcvars32.bat」,修改好後點確定
第四步:編寫test.cpp程序
1)在D盤新建一個文件夾,命名為testCode
2)打開testCode,在裡面新建一個文本文檔,命名為test.cpp(注意,如果你的系統設置中隱藏了已知文件類型的擴展名,必須顯示它,否則你創建的test.cpp的真實名字將是test.cpp.txt)
3)用記事本或EditPlus打開test.cpp,在其中寫入代碼,例如:
#include <iostream>
int main()
{
std::cout<<"Hello World!"<<std::endl;
while(1)
{
//ignore
}
}
第五步:編譯test.cpp
1)雙擊第三步中創建的cmd.exe的桌面快捷方式,打開命令行窗口
2)輸入:cd d: 回車
3)輸入:cd Ccodes 回車
4)輸入:cl -EHsc test.cpp 回車
編譯器開始編譯test.cpp。我們可以從命令行的輸出內容中看到編譯結果。如果程序沒有書寫錯誤,一定可以編譯出一個test.exe和一個test.obj。其中exe文件即是編譯後的可執行程序。obj文件是按塊編譯產生的中間文件。至此,整個命令行編譯流程結束。
『貳』 如何編譯google test的例子
Cmake generates native build scripts. 先建立mybuild目錄
# cd /usr/src/gtest-1.5.0
# mddir mybuild
# cd mybuild
(1) only generate gtest_unittest
# cmake /usr/src/gtest-1.5.0 //generate Makefile
# make //generate executable file gtest_unittest
(2) generate gtest_unittest and all samples
//generate Makefile with Google Test's samples to be compiled
# cmake -Dbuild_gtest_samples=ON /usr/src/gtest-1.5.0
//generate executable files gtest_unittest, sample1_unittest, sample2_unittest, ...
# make
Reference
http://code.google.com/p/googletest
../readme
Appendix. 使用CMake編譯gtest_unittest和samples
//生成Makefile文件
root@yu29:/usr/src/gtest-1.5.0/mybuild# cmake -Dbuild_gtest_samples=ON /usr/src/gtest-1.5.0
-- The CXX compiler identification is GNU
-- The C compiler identification is GNU
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Looking for include files CMAKE_HAVE_PTHREAD_H
-- Looking for include files CMAKE_HAVE_PTHREAD_H - found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Found pythonInterp: /usr/bin/python2.6
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/src/gtest-1.5.0/mybuild
root@yu29:/usr/src/gtest-1.5.0/mybuild# ls
CMakeCache.txt CMakeFiles cmake_install.cmake CTestTestfile.cmake Makefile
//編譯
root@yu29:/usr/src/gtest-1.5.0/mybuild# make
Scanning dependencies of target gtest
[ 5%] Building CXX object CMakeFiles/gtest.dir/src/gtest-all.cc.o
Linking CXX static library libgtest.a
[ 5%] Built target gtest
Scanning dependencies of target gtest_main
[ 11%] Building CXX object CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
...
//生成了所有samples的可執行程序
root@yu29:/usr/src/gtest-1.5.0/mybuild# ls
CMakeCache.txt libgtest.a sample2_unittest sample7_unittest
CMakeFiles libgtest_main.a sample3_unittest sample8_unittest
cmake_install.cmake Makefile sample4_unittest sample9_unittest
CTestTestfile.cmake sample10_unittest sample5_unittest
gtest_unittest sample1_unittest sample6_unittest
//看看sample2的執行結果
root@yu29:/usr/src/gtest-1.5.0/mybuild# ./sample2_unittest
Running main() from gtest_main.cc
[==========] Running 4 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 4 tests from MyString
[ RUN ] MyString.DefaultConstructor
[ OK ] MyString.DefaultConstructor (0 ms)
[ RUN ] MyString.ConstructorFromCString
[ OK ] MyString.ConstructorFromCString (0 ms)
[ RUN ] MyString.CopyConstructor
[ OK ] MyString.CopyConstructor (0 ms)
[ RUN ] MyString.Set
[ OK ] MyString.Set (0 ms)
[----------] 4 tests from MyString (0 ms total)
[----------] Global test environment tear-down
[==========] 4 tests from 1 test case ran. (1 ms total)
[ PASSED ] 4 tests.
//gtest_unittest的執行結果較長,此處不再顯示。
『叄』 linux平台如何編譯使用Google test寫的單元測試
(請參考readme文件) Step1.編譯gtest-all.cc和gtest_main.cc文件g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.ccg++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest_main.cc Step2.將step1生成的gtest-all.o和gtest_main.o打包成靜態庫libgtest.aar -rv libgtest.a gtest-all.o gtest_main.o Step3.編譯要測試的代碼(假設文件名為sample.cpp)g++ -I${GTEST_DIR}/include -c sample.cpp Step4.編譯單元測試的代碼(假設文件名為test.cpp)g++ -I${GTEST_DIR}/include -c test.cpp Step5.與libgtest.a或其他需要的庫鏈接、生成可執行程序g++ -I${GTEST_DIR}/include test.o sample.o libgtest.a -o test 其他的庫,如pthread庫。簡單版本all:g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.ccg++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.ccar -rv libgtest.a gtest-all.o gtest_main.og++ -I/usr/src/gtest-1.5.0/include -g -c sample.cppg++ -I/usr/src/gtest-1.5.0/include -g -c test.cppg++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o libgtest.a -g -o testclean:rm test libgtest.a *.o 實際上,其中將gtest-all.o和gtest_main.o壓縮為libgtest.a庫,可以省去,直接使用.o文件,如下。all:g++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest-all.ccg++ -I/usr/src/gtest-1.5.0/include -I/usr/src/gtest-1.5.0 -g -c /usr/src/gtest-1.5.0/src/gtest_main.ccg++ -I/usr/src/gtest-1.5.0/include -g -c sample.cppg++ -I/usr/src/gtest-1.5.0/include -g -c test.cppg++ -I/usr/src/gtest-1.5.0/include -lpthread test.o sample.o gtest-all.o gtest_main.o -g -o testclean:rm test *.o正式版本# Google Test directoryGTEST_DIR = /usr/src/gtest-1.5.0 # Flags passed to the preprocessor.CPPFLAGS += -I$(GTEST_DIR)/include # Flags passed to the C++ compiler.CXXFLAGS += -g -Wall -Wextra # All Google Test headers. Usually you shouldn't change this definition.GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h $(GTEST_DIR)/include/gtest/internal/*.h # All Google Test sourcesGTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) # All tests proced by this Makefile. Remember to add new tests you created to the list.TESTS = test all : $(TESTS) clean :rm -f $(TESTS) gtest.a gtest_main.a *.o gtest-all.o : $(GTEST_DIR)/src/gtest-all.cc # $(GTEST_SRCS_)$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest-all.cc gtest_main.o : $(GTEST_DIR)/src/gtest_main.cc # $(GTEST_SRCS_)$(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $(GTEST_DIR)/src/gtest_main.cc gtest_main.a : gtest-all.o gtest_main.o$(AR) $(ARFLAGS) $@ $^ sample.o : sample.cpp sample.h $(GTEST_HEADERS)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c sample.cpp test.o : test.cpp sample.h $(GTEST_HEADERS)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c test.cpp test : sample.o test.o gtest_main.a$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@$^代表依賴項,$@代表目標。
『肆』 如何在命令行編譯執行C++源文件
gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。
一. 常用編譯命令選項
假設源程序文件名為test.c。
1. 無選項編譯鏈接
用法:#gcc test.c
作用:將test.c預處理、匯編、編譯並鏈接形成可執行文件。這里未指定輸出文件,默認輸出為a.out。編譯成功後可以看到生成了一個a.out的文件。在命令行輸入./a.out 執行程序。./表示在當前目錄,a.out為可執行程序文件名。
2. 選項 -o
用法:#gcc test.c -o test
作用:將test.c預處理、匯編、編譯並鏈接形成可執行文件test。-o選項用來指定輸出文件的文件名。輸入./test執行程序。
3. 選項 -E
用法:#gcc -E test.c -o test.i
作用:將test.c預處理輸出test.i文件。
4. 選項 -S
用法:#gcc -S test.i
作用:將預處理輸出文件test.i匯編成test.s文件。
5. 選項 -c
用法:#gcc -c test.s
作用:將匯編輸出文件test.s編譯輸出test.o文件。
6. 無選項鏈接
用法:#gcc test.o -o test
作用:將編譯輸出文件test.o鏈接成最終可執行文件test。輸入./test執行程序。
7. 選項-O
用法:#gcc -O1 test.c -o test
作用:使用編譯優化級別1編譯程序。級別為1~3,級別越大優化效果越好,但編譯時間越長。輸入./test執行程序。
二. 多源文件的編譯方法
如果有多個源文件,基本上有兩種編譯方法:
[假設有兩個源文件為test.c和testfun.c]
1. 多個文件一起編譯
用法:#gcc testfun.c test.c -o test
作用:將testfun.c和test.c分別編譯後鏈接成test可執行文件。
2. 分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接。
用法:
#gcc -c testfun.c //將testfun.c編譯成testfun.o
#gcc -c test.c //將test.c編譯成test.o
#gcc -o testfun.o test.o -o test //將testfun.o和test.o鏈接成test
以上兩種方法相比較,第一中方法編譯時需要所有文件重新編譯,而第二種方法可以只重新編譯修改的文件,未修改的文件不用重新編譯。
『伍』 編譯Test類的完整命令
你好,是g++ .. /src/test_ekho.cpp libekho.a。編譯(compilation , compile) 利用編譯程序從源語言編寫的源程序產生目標程序的過程。用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
『陸』 linux終端下如何進行C語言編譯
1、首先在linux下判斷是否安裝gcc編譯器,直接執行:gcc -v,判斷是否安裝gcc。