windows 上的柯南声明设置未设置,已设置
Conan on windows claims setting isn't set, it is set
我正在尝试将程序从 Linux 移植到 windows。该程序是用柯南构建的。
目前我运行:
conan install . -if build -s build_type=Debug
我收到这个错误:
ERROR: : 'settings.compiler.cppstd' value not defined
我的 conan.py:
class ConanFileNeverEngine(ConanFile):
generators = "pkg_config"
requires = [
"eigen/3.4.0",
"libffi/3.4.2", # Not sure why but without this wayland causes a conflict.
"wayland/1.19.0",
"glfw/3.3.4",
"shaderc/2019.0",
"freetype/2.10.4",
"eigen/3.4.0",
"harfbuzz/2.8.2",
"vulkan-memory-allocator/2.3.0",
"gtest/1.10.0",
"benchmark/1.5.3",
"tinygltf/2.5.0",
"stb/20200203",
"vulkan-headers/1.2.182",
"vulkan-validationlayers/1.2.182",
"cereal/1.3.0"
]
settings = {
"os": None,
"compiler" : None,
"cppstd": ["20"],
"build_type" : None}
....
我也试过手动设置:
def config_options(self):
# self.output.warn("test")
self.settings.compiler.cppstd = "20"
self.settings.compiler.runtime = "dynamic"
if os_info.is_linux:
if os_info.linux_distro == 'ubuntu':
window_system = os.environ['XDG_SESSION_TYPE']
if window_system == 'wayland':
self.output.error("System is using wayland, switch to x11.")
我得到了完全相同的错误。
我不明白我在设置值。
设置是外部的、项目范围的配置,不能在 conanfile.py
文件中定义或赋值。
设置在您的配置文件中定义,例如“默认”,您可以在键入 conan install
时看到它打印出来,例如:
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
您可以检查您定义的值是否不存在,因为您稍后会尝试定义它的值。
所以你可以:
- 在一个配置文件中定义您的
compiler.cppstd
。 “默认”一个,或您自己的自定义配置文件(您可以使用 conan config install
命令共享配置文件)
- 请注意,您可以为每个包设置设置,如有必要,使用
mypkg:compiler.cppstd=xxx
,通常作为例外情况,因为设置旨在用于整个项目
- 命令行传递
-s compiler.cppstd=xxx
原因是“recipes/conanfile”描述了事情是如何完成的,但它们是通用的,它们应该适用于任何配置。特定的配置值,如 cppstd 或使用的编译器必须在配方外部。
添加这个值
compiler.cppstd=17
在默认配置文件中
C:\Users\<user name>\.conan\profiles\default
compiler=msvc
compiler.version=193
compiler.cppstd=17
compiler.runtime=dynamic
我正在尝试将程序从 Linux 移植到 windows。该程序是用柯南构建的。
目前我运行:
conan install . -if build -s build_type=Debug
我收到这个错误:
ERROR: : 'settings.compiler.cppstd' value not defined
我的 conan.py:
class ConanFileNeverEngine(ConanFile):
generators = "pkg_config"
requires = [
"eigen/3.4.0",
"libffi/3.4.2", # Not sure why but without this wayland causes a conflict.
"wayland/1.19.0",
"glfw/3.3.4",
"shaderc/2019.0",
"freetype/2.10.4",
"eigen/3.4.0",
"harfbuzz/2.8.2",
"vulkan-memory-allocator/2.3.0",
"gtest/1.10.0",
"benchmark/1.5.3",
"tinygltf/2.5.0",
"stb/20200203",
"vulkan-headers/1.2.182",
"vulkan-validationlayers/1.2.182",
"cereal/1.3.0"
]
settings = {
"os": None,
"compiler" : None,
"cppstd": ["20"],
"build_type" : None}
....
我也试过手动设置:
def config_options(self):
# self.output.warn("test")
self.settings.compiler.cppstd = "20"
self.settings.compiler.runtime = "dynamic"
if os_info.is_linux:
if os_info.linux_distro == 'ubuntu':
window_system = os.environ['XDG_SESSION_TYPE']
if window_system == 'wayland':
self.output.error("System is using wayland, switch to x11.")
我得到了完全相同的错误。
我不明白我在设置值。
设置是外部的、项目范围的配置,不能在 conanfile.py
文件中定义或赋值。
设置在您的配置文件中定义,例如“默认”,您可以在键入 conan install
时看到它打印出来,例如:
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
您可以检查您定义的值是否不存在,因为您稍后会尝试定义它的值。
所以你可以:
- 在一个配置文件中定义您的
compiler.cppstd
。 “默认”一个,或您自己的自定义配置文件(您可以使用conan config install
命令共享配置文件) - 请注意,您可以为每个包设置设置,如有必要,使用
mypkg:compiler.cppstd=xxx
,通常作为例外情况,因为设置旨在用于整个项目 - 命令行传递
-s compiler.cppstd=xxx
原因是“recipes/conanfile”描述了事情是如何完成的,但它们是通用的,它们应该适用于任何配置。特定的配置值,如 cppstd 或使用的编译器必须在配方外部。
添加这个值
compiler.cppstd=17
在默认配置文件中
C:\Users\<user name>\.conan\profiles\default
compiler=msvc
compiler.version=193
compiler.cppstd=17
compiler.runtime=dynamic