Skip to content

Instantly share code, notes, and snippets.

@caiorss
Created June 16, 2019 00:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save caiorss/7b0732f5de5ebc40981521e63a122d8e to your computer and use it in GitHub Desktop.
Save caiorss/7b0732f5de5ebc40981521e63a122d8e to your computer and use it in GitHub Desktop.
Cmake conan C++ project example
cmake_minimum_required(VERSION 3.9)
#========== Global Configurations =============#
#----------------------------------------------#
project(ConanTesting CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_VERBOSE_MAKEFILE ON)
# ============= Conan Bootstrap =============================#
# Download automatically, you can also just copy the conan.cmake file
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://github.com/conan-io/cmake-conan/raw/v0.13/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake")
endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
conan_cmake_run(REQUIRES
# Libraries to be installed locally
Poco/1.9.0@pocoproject/stable
gtest/1.8.1@bincrafters/stable
BASIC_SETUP
BUILD missing
)
#========== Find Packages =====================#
find_package(GTest REQUIRED)
# find_package(Poco REQUIRED Foundation)
#========== Targets Configurations ============#
# ==> Target for testing POCO Libraries
add_executable(poco demo-poco.cpp)
target_link_libraries(poco PRIVATE ${CONAN_LIBS})
# ==> Target for testing GogleTest
add_executable(agtest demo-gtest.cpp)
target_link_libraries(agtest PRIVATE GTest::GTest GTest::Main)
add_test(MyGoogleTest agtest)
install(TARGETS poco agtest DESTINATION ./bin)
#include <iostream>
#include <Poco/Process.h>
#include <gtest/gtest.h>
auto FunctionObject = [](int n){ return 5 * n + 4; };
TEST(testA, FunctionObject)
{
EXPECT_EQ(19, FunctionObject(3));
}
TEST(testC, FunctionObject)
{
EXPECT_EQ(123, FunctionObject(5));
}
TEST(testB, FunctionObject)
{
EXPECT_EQ(24, FunctionObject(4));
}
#include <iostream>
#include <Poco/Process.h>
int main()
{
std::cout << "Running POCO Libraries Launch." << std::endl;
std::cout << "Poco Libraries are AWESOME!" << std::endl;
#if !defined(_WIN32)
std::cerr << " [INFO] I am running on some Unix-like Operating System." << std::endl;
Poco::Process::launch("cat", {"/etc/protocols"});
#else
std::cerr << " [INFO] I am running on Windows." << std::endl;
Poco::Process::launch("notepad.exe", {});
#endif
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment