带有 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:“测试框架意外退出”