NMakeDeps¶
此生成器可以用作
from conan import ConanFile
class Pkg(ConanFile):
settings = "os", "compiler", "build_type", "arch"
requires = "mydep/1.0"
# attribute declaration
generators = "NMakeDeps"
# OR explicit usage in the generate() method
def generate(self):
deps = NMakeDeps(self)
deps.generate()
def build(self):
self.run(f"nmake /f makefile")
生成器将创建一个 conannmakedeps.bat
环境脚本,该脚本定义 CL
、LIB
和 _LINK_
环境变量,注入必要的标志以定位和链接在 requires
中声明的依赖项。此生成器最有可能与 NMakeToolchain
一起使用。
NMakeToolchain¶
此生成器可以用作
from conan import ConanFile
class Pkg(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "NMakeToolchain"
def build(self):
self.run("nmake /f makefile")
或者它可以在 conanfile 的 generate()
方法中完全实例化
from conan import ConanFile
from conan.tools.microsoft import NMakeToolchain
class Pkg(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = NMakeToolchain(self)
tc.generate()
def build(self):
self.run("nmake /f makefile")
NMakeToolchain 生成器将创建一个 conannmaketoolchain.bat
环境脚本,将从配置文件(build_type、runtime、cppstd、conf 中的构建标志)推断出的标志注入到 NMake 可以理解的环境变量中:CL
和 _LINK_
。它还将生成一个 conanvcvars.bat
脚本,该脚本激活与 Conan 主机设置 arch
、compiler
和 compiler.version
以及构建设置 arch
匹配的正确 VS 提示符。
构造函数¶
def __init__(self, conanfile):
conanfile
:当前配方对象。始终使用self
。
属性¶
如果要注入更多标志,可以在调用 generate()
方法之前更改某些属性
from conan import ConanFile
from conan.tools.microsoft import NMakeToolchain
class Pkg(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = NMakeToolchain(self)
tc.extra_cflags.append("/my_flag")
tc.extra_defines.append("FOO=BAR")
tc.generate()
extra_cflags(默认为
[]
):附加的 cflags。extra_cxxflags(默认为
[]
):附加的 cxxflags。extra_defines(默认为
[]
):附加的定义。extra_ldflags(默认为
[]
):附加的 ldflags。
conf¶
NMaketoolchain
受这些 [conf]
变量的影响
tools.build:cflags
将由CL
使用的额外纯 C 标志列表。tools.build:cxxflags
将由CL
使用的额外 C++ 标志列表。tools.build:defines
将由CL
使用的预处理器定义列表。tools.build:sharedlinkflags
将由_LINK_
使用的额外链接器标志列表。tools.build:exelinkflags
将由_LINK_
使用的额外链接器标志列表。tools.build:compiler_executables
字典状 Python 对象,它指定编译器作为键,编译器可执行文件路径作为值。这些键将按如下方式映射asm
:将在 conannmaketoolchain.sh|bat 脚本中设置AS
。c
:将在 conannmaketoolchain.sh|bat 脚本中设置CC
。cpp
:将在 conannmaketoolchain.sh|bat 脚本中设置CPP
和CXX
。rc
:将在 conannmaketoolchain.sh|bat 脚本中设置RC
。
自定义环境¶
如果您的 Makefile
脚本需要除 CL
和 _LINK_
之外的其他环境变量,您可以在调用 generate()
方法之前自定义它。调用 environment()
方法以计算提到的变量,然后添加您需要的变量。 environment()
方法返回一个 Environment 对象
from conan import ConanFile
from conan.tools.microsoft import NMakeToolchain
class Pkg(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = NMakeToolchain(self)
env = tc.environment()
env.define("FOO", "BAR")
tc.generate(env)
您还可以检查 NMakeToolchain 将注入 conannmaketoolchain.sh|bat 脚本中的默认环境变量
from conan import ConanFile
from conan.tools.microsoft import NMakeToolchain
class Pkg(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = NMakeToolchain(self)
env_vars = tc.vars()
cl_env_var = env_vars.get("CL")