Skip to content

Commit

Permalink
Merge pull request #13 from sixten-hilborn/exported
Browse files Browse the repository at this point in the history
Support conan.cmake in exported packages
  • Loading branch information
memsharded authored Jan 24, 2017
2 parents 53fd5f2 + ed37e65 commit 51bace9
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 13 deletions.
37 changes: 24 additions & 13 deletions conan.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,10 @@ endfunction()

macro(conan_load_buildinfo)
if(CONAN_CMAKE_MULTI)
set(_CONANBUILDINFO conanbuildinfo_multi.cmake)
else()
set(_CONANBUILDINFO conanbuildinfo.cmake)
endif()
set(_CONANBUILDINFO conanbuildinfo_multi.cmake)
else()
set(_CONANBUILDINFO conanbuildinfo.cmake)
endif()
# Checks for the existence of conanbuildinfo.cmake, and loads it
# important that it is macro, so variables defined at parent scope
if(EXISTS "${CMAKE_BINARY_DIR}/${_CONANBUILDINFO}")
Expand All @@ -215,19 +215,30 @@ endmacro()

macro(conan_cmake_run)
parse_arguments(${ARGV})
conan_cmake_generate_conanfile(${ARGV})
if(CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)

# TODO: Better detection
if(CONAN_EXPORTED OR CONAN_COMPILER)
set(CONAN_EXPORTED ON)
endif()

if(CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE AND NOT CONAN_EXPORTED)
set(CONAN_CMAKE_MULTI ON)
message(STATUS "Conan: Using cmake-multi generator")
foreach(CMAKE_BUILD_TYPE "Release" "Debug")
conan_cmake_settings(settings)
conan_cmake_install(SETTINGS ${settings} ${ARGV})
endforeach()
set(CMAKE_BUILD_TYPE)
else()
set(CONAN_CMAKE_MULTI OFF)
conan_cmake_settings(settings)
conan_cmake_install(SETTINGS ${settings} ${ARGV})
endif()
if(NOT CONAN_EXPORTED)
conan_cmake_generate_conanfile(${ARGV})
if(CONAN_CMAKE_MULTI)
foreach(CMAKE_BUILD_TYPE "Release" "Debug")
conan_cmake_settings(settings)
conan_cmake_install(SETTINGS ${settings} ${ARGV})
endforeach()
set(CMAKE_BUILD_TYPE)
else()
conan_cmake_settings(settings)
conan_cmake_install(SETTINGS ${settings} ${ARGV})
endif()
endif()

conan_load_buildinfo()
Expand Down
39 changes: 39 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,42 @@ class Pkg(ConanFile):
run("cmake .. -DCMAKE_BUILD_TYPE=Release")
run("cmake --build . --config Release")
run("bin\main")

def test_exported_package(self):
content = """cmake_minimum_required(VERSION 2.8)
project(conan_wrapper CXX)
set(CONAN_EXPORTED ON)
include(conan.cmake)
conan_cmake_run(CONANFILE conanfile.py
BASIC_SETUP CMAKE_TARGETS
BUILD missing)
add_executable(main main.cpp)
target_link_libraries(main CONAN_PKG::Hello)
"""
save("CMakeLists.txt", content)
save("conanfile.py", """
from conans import ConanFile, CMake
class Pkg(ConanFile):
name = "Test"
version = "0.1"
requires = "Hello/0.1@memsharded/testing"
generators = "cmake"
exports = ["CMakeLists.txt", "conan.cmake", "main.cpp"]
settings = "os", "arch", "compiler", "build_type"
def build(self):
cmake = CMake(self.settings)
self.run('cmake . ' + cmake.command_line)
self.run('cmake --build . ' + cmake.build_config)
""")
run("conan export test/testing")

os.makedirs("build")
os.chdir("build")
save("conanfile.txt", """[requires]
Test/0.1@test/testing""")
run("conan install . --build Test")
run("conan remove -f Test/0.1@test/testing")

0 comments on commit 51bace9

Please sign in to comment.