带有 MSVC 和 CLION 的 Makefile

Posted

技术标签:

【中文标题】带有 MSVC 和 CLION 的 Makefile【英文标题】:Makefile with MSVC and CLION 【发布时间】:2021-03-13 10:48:21 【问题描述】:

我使用 ATL 库,所以我必须使用 MSVC 而不是 MinGW。但是用 Makefile 编写的 MSVC 库是看不到的(用 Makefile 他们是)。我想 MSVC 根本看不到 Makefile。对如何编译项目有什么设想吗?


# Remove NDEBUG define to trigger asserts
CPPFLAGS+=-O2 -std=gnu++11 -I. -DNDEBUG -Wall -Wno-sign-compare -Wno-unused -g -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DOPENSSL
LDFLAGS+=-levent -lstdc++ -lssl -lcrypto

uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
ifeq ($(uname_S),FreeBSD)
  CXX=clang++
  LIBEVENT_HOME=D:/ProximaX/d/vcpkg/vcpkg/packages/libevent_x86-windows
  CPPFLAGS+=-I$LIBEVENT_HOME/include
  LDFLAGS+=-L$LIBEVENT_HOME/lib
else
  CXX?=g++
  LIBEVENT_HOME=D:/ProximaX/d/vcpkg/vcpkg/packages/libevent_x86-windows
  CPPFLAGS+=-I$LIBEVENT_HOME/include
  LDFLAGS+=-L$LIBEVENT_HOME/lib
  OPENSSL_HOME=D:/ProximaX/d/vcpkg/vcpkg/packages/openssl_x86-windows
  CPPFLAGS+=-I$OPENSSL_HOME/include
  LDFLAGS+=-L$OPENSSL_HOME/lib
  ATL_HOME=D:/VS17/VC/Tools/MSVC/14.16.27023/atlmfc
  CPPFLAGS+=-I$ATL_HOME/include
  LDFLAGS+=-L$ATL_HOME/lib
endif

all: swift-dynamic

swift: swift.o sha1.o compat.o sendrecv.o send_control.o hashtree.o bin.o binmap.o channel.o transfer.o httpgw.o statsgw.o cmdgw.o avgspeed.o avail.o storage.o zerostate.o zerohashtree.o livehashtree.o live.o api.o content.o swarmmanager.o address.o livesig.o exttrack.o

swift-static: swift
    $CXX $CPPFLAGS -o swift *.o $LDFLAGS -static -lrt
    strip swift
    touch swift-static

swift-dynamic: swift
    $CXX $CPPFLAGS -o swift *.o $LDFLAGS
    touch swift-dynamic

clean:
    rm -f *.o swift swift-static swift-dynamic 2>/dev/null

.PHONY: all clean swift swift-static swift-dynamic

【问题讨论】:

【参考方案1】:

Visual Studio 不使用生成文件。您需要创建一个项目并正确配置它。另见this question。

这就是面向 Windows 和 Linux 的库同时提供生成文件和 Visual Studio 项目文件的原因。或者他们使用“元构建工具”,例如 CMake,可以从同一来源生成两者。

或者,您可以重写 makefile 以调用 Visual Studio 编译器,但编译和链接选项会有所不同。

【讨论】:

我想部署这个库github.com/libswift/libswift。它使用 ATL(所以我必须使用 MSVC)但也使用 Makefile 你应该在 GitHub 上开一张票,并要求解释如何在 Windows 上构建。它不适用于提供的 Makefile,因为它是 Linux 特定的。

以上是关于带有 MSVC 和 CLION 的 Makefile的主要内容,如果未能解决你的问题,请参考以下文章

在 windows 上使用 clion 调试 rust 代码

带有 Qt 5 和 Qt Creator 的 msvc2013

CMAKE_GNUtoMS:将GNU格式库转换为MSVC格式

带有 CLion 的 Boost.TEST:“测试框架意外退出”

带有链接时代码生成的 MSVC 能否跨 C 和 C++ 进行优化?

如何评价 JetBrains 的新 C/C++ IDE CLion