solidity/libsolutil/CMakeLists.txt
Jun Zhang 74a38fc3d8
Fix incorrect CMAKE_SOURCE_DIR usage
When using solidity as a third-party library (include it into our
project using FetchContent), we encountered a strange compilation error.
For some reason, cmake considers the root directory of the project as
the root directory of the dependency (solidity). This is because
solidity is incorrectly using CMAKE_SOURCE_DIR variable, which should be
PROJECT_SOURCE_DIR (The former one refers to the top-level source
directory that contains a CMakeLists.txt, while the latter refers to the
source directory of the most recent project() command)

I've created a repo for demonstration (https://github.com/junaire/test-solidity-fetch-content)

Signed-off-by: Jun Zhang <jun@junz.org>
2023-06-08 19:17:34 +08:00

55 lines
960 B
CMake

set(sources
Algorithms.h
AnsiColorized.h
Assertions.h
Common.h
CommonData.cpp
CommonData.h
CommonIO.cpp
CommonIO.h
cxx20.h
Exceptions.cpp
Exceptions.h
ErrorCodes.h
FixedHash.h
FunctionSelector.h
IndentedWriter.cpp
IndentedWriter.h
IpfsHash.cpp
IpfsHash.h
JSON.cpp
JSON.h
Keccak256.cpp
Keccak256.h
LazyInit.h
LEB128.h
Numeric.cpp
Numeric.h
picosha2.h
Result.h
SetOnce.h
StackTooDeepString.h
StringUtils.cpp
StringUtils.h
SwarmHash.cpp
SwarmHash.h
TemporaryDirectory.cpp
TemporaryDirectory.h
UTF8.cpp
UTF8.h
vector_ref.h
Views.h
Visitor.h
Whiskers.cpp
Whiskers.h
)
add_library(solutil ${sources})
target_link_libraries(solutil PUBLIC jsoncpp Boost::boost Boost::filesystem Boost::system range-v3 fmt::fmt-header-only)
target_include_directories(solutil PUBLIC "${PROJECT_SOURCE_DIR}")
add_dependencies(solutil solidity_BuildInfo.h)
if(SOLC_LINK_STATIC)
target_link_libraries(solutil PUBLIC Threads::Threads)
endif()