У меня есть пакет с 2 вариантами со следующей структурой каталогов
pkg
pkg_main.h
CMakeLists.txt
var1
pkg_main.cpp
var2
pkg_main.cpp
conanfile.py
С конан, Я пытаюсь определить вариант fileSelection
с возможными значениями var1
а также var2
,
С помощью cmake я пытаюсь сделать выбор следующим образом: если fileSelection
установлен в var1
, затем var1/pkg_main.cpp
должен называться, в противном случае var2/pkg_main.cpp
,
До сих пор я определил вариант fileSelection
в conanfile.py
class PkgConan(ConanFile):
name = "pkg"...
options = {"fileSelection : ['var1', 'var2']"}
default_options = "fileSelection=var1"generators = "cmake"
def build(self):
cmake = CMake(self)
cmake.configure(source_folder="pkg")
cmake.build()
def package(self):
self.copy("*.h", dst="include", src="pkg")
self.copy("*pkg.lib", dst="lib", keep_path=False)
self.copy("*.dll", dst="bin", keep_path=False)
self.copy("*.so", dst="lib", keep_path=False)
self.copy("*.dylib", dst="lib", keep_path=False)
self.copy("*.a", dst="lib", keep_path=False)
def package_info(self):
self.cpp_info.libs = ["pkg"]
Сейчас я пытаюсь обновить CMakeLists.txt
файл для выбора в соответствии со значением fileSelection
, Что-то вроде этого:
[вот логика, а не исполняемый код]
if("${fileSelection}" STREQUAL "var1")
add_library(pkg var1/pkg_main.cpp)
else
add_library(pkg var2/pkg_main.cpp)
endif
?? Как мне пройти fileSelection
возможность сделать; где и как мне реализовать переключение между var1
а также var2
(я иду в правильном направлении, пытаясь определить переключатель в CMakeLists.txt)?
Вы можете передавать переменные в вызов командной строки cmake, управляемый помощником cmake. Что-то вроде:
options = {"fileSelection": ["var1", "var2"]}
...
def build(self):
cmake = CMake(self)
cmake.definitions["fileSelection"] = self.options.fileSelection
cmake.configure(source_folder="pkg")
cmake.build()
Это предполагает, что у вас есть логика CMakeLists.txt, которую вы описываете.
Других решений пока нет …