prism/examples/prism-cmake.html

102 lines
1.9 KiB
HTML

<h2>Comments</h2>
<pre><code># This is a comment</code></pre>
<h2>Keywords</h2>
<pre><code>add_library(foo main.cpp)
target_link_libraries(foo bar)
</code></pre>
<h2>Functions</h2>
<pre><code>user_defined_function()
another_custom_function(argument)
</code></pre>
<h2>Variables</h2>
<pre><code>CMAKE_COMPILER_IS_GNUG77
CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY
CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_WHATEVER
CMAKE_CONFIGURATION_TYPES
CMAKE_CPACK_COMMAND
CMAKE_CROSSCOMPILING
CMAKE_CROSSCOMPILING_EMULATOR
CMAKE_CTEST_COMMAND
CMAKE_CUDA_EXTENSIONS
CMAKE_CUDA_HOST_COMPILER
CMAKE_CUDA_SEPARABLE_COMPILATION
CMAKE_CUDA_STANDARD
CMAKE_CUDA_STANDARD_REQUIRED
"${INSIDE_STRING}"
"${PROPER}chaining${VARIABLES}"
</code></pre>
<h2>Properties</h2>
<pre><code>CUDA_STANDARD
CUDA_STANDARD_REQUIRED
CXX_EXTENSIONS
CXX_STANDARD
cxx_std_17
cxx_variadic_templates</code></pre>
<h2>Strings</h2>
<pre><code>"A string"
"A multi
line
string"
"A ${VARIABLE} insde a string"</code></pre>
<h2>Full example</h2>
<pre><code>cmake_minimum_required(VERSION 3.13)
project(crypto)
add_library(base INTERFACE)
target_compile_features(base INTERFACE
cxx_std_17
)
add_subdirectory(helpers)
add_subdirectory(msg)
add_library(analyzers-obj OBJECT
CryptoAnalyzer.cpp
)
target_include_directories(analyzers-obj
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)
find_package(predi REQUIRED)
target_link_libraries(analyzers-obj
PUBLIC
base
predi::predi
crypto::helpers
)
set_target_properties(analyzers-obj
PROPERTIES
POSITION_INDEPENDENT_CODE ON
)
add_library(analyzers SHARED
$&lt;TARGET_OBJECTS:analyzers-obj&gt;
)
target_link_libraries(analyzers PUBLIC analyzers-obj)
add_executable(crypto
main.cpp
)
target_link_libraries(crypto
PUBLIC
analyzers
PRIVATE
base
messages
)
enable_testing()
add_subdirectory(tests)
</code></pre>