簡體   English   中英

如何在 Windows 和 Linux 中構建跨平台的 C++ 庫

[英]How to build a cross-platform C++ library in Windows and Linux

我是 Linux 用戶,也是 C++ 的初學者。 我正在開發一個具有以下結構的小型庫

  • 源代碼
    • 主文件
    • 生成文件
  • 包括
    • 輸入.h
    • 生成TabValues.h
    • 原型.h
  • 數據
    • TabNodes.csv
    • TabWeights.csv
  • 輸出
    • 測試1
      • 結果.txt
    • 測試2 ...

在 Linux 中,我通常使用 gcc 編譯 C++,當我有多個依賴項時,我使用 make 和 makefile。 在當前案例的下方

CXX = g++

CXXFLAGS = -g -Wall
DLIBS = -lm -lgsl -lgslcblas -lgmp -lquadmath

DEPS = ../../include
TEST1 = ../../output/test1
TEST2 = ../../output/test2
TEST3 = ../../output/test3

vpath %.h $(DEPS)

main: *.cpp $(DEPS)/*.h $(TEST1)/*.h
    g++ $(CXXFLAGS) -I $(DEPS) -I $(TEST1) *.cpp -o main $(DLIBS)

all: test1 test2 test3

test1: *.cpp $(DEPS)/*.h $(TEST1)/*.h
    g++ $(CXXFLAGS) -I $(DEPS) -I $(TEST1) *.cpp -o main $(DLIBS)
    ./main test1

test2: *.cpp $(DEPS)/*.h $(TEST2)/*.h
    g++ $(CXXFLAGS) -I $(DEPS) -I $(TEST2) *.cpp -o main $(DLIBS)
    ./main test2

test3: *.cpp $(DEPS)/*.h $(TEST3)/*.h
    g++ $(CXXFLAGS) -I $(DEPS) -I $(TEST3) *.cpp -o main $(DLIBS)
    ./main test3

clean:
    rm -f main 

我現在必須使我的庫跨平台並且能夠在 Windows 上編譯和運行。

理想情況下,我想保留相同的結構,並可能添加一個包含linuxwin子文件夾的構建文件夾,前者具有上述生成文件。 但是我不確定如何在 Windows 上編譯它。

在 Windows 中是否有等效項? 我應該將 MSVC 與 MinGW 一起使用嗎? 關於靈活可移植性和交叉編譯的最佳方法的任何幫助或建議?

使用 MSVC 或 MinGW-w64,並確保不要混合使用它們。

但如果你來自 Linux 世界,你應該堅持使用 MinGW-w64,甚至可以考慮MSYS2 ,它為你提供了一個 bash shell。

在此處查看我的跨平台庫的最小示例: https ://github.com/brechtsanders/ci-test

該項目同時具有跨平台工作的Makefile (不適用於 MSVC)和CMakeLists.txt (雖然不是 MSVC)。

暫無
暫無

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

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