-
Notifications
You must be signed in to change notification settings - Fork 23
Description
I'm trying to fix the following warnings for all the ADD_CUSTOM_COMMAND() of lib tau when using cmake >= 3.5
CMake Warning (dev) at src/base/common/libs/3rd-party/tau/data/CMakeLists.txt:106 (ADD_CUSTOM_COMMAND):
The following keywords are not supported when using
add_custom_command(TARGET): DEPENDS, OUTPUTS.
Policy CMP0175 is not set: add_custom_command() rejects invalid arguments.
...
CMake Warning (dev) at src/base/common/libs/3rd-party/tau/data/CMakeLists.txt:106 (ADD_CUSTOM_COMMAND):
Exactly one of PRE_BUILD, PRE_LINK, or POST_BUILD must be given. Assuming
POST_BUILD to preserve backward compatibility.
Policy CMP0175 is not set: add_custom_command() rejects invalid arguments.
Run "cmake --help-policy CMP0175" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.
This warning is for project developers. Use -Wno-dev to suppress it.
Here from src/base/common/libs/3rd-party/tau/data/CMakeLists.txt, current code for target iasp91:
ADD_CUSTOM_COMMAND(
COMMAND ${TAU_COMMAND_PREFIX}tau_remodl iasp91 ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS tau_remodl
OUTPUTS remodl.tbl remodl.hed
TARGET TTT_iasp91
)
This fix works by simply using OUTPUT and removing TARGET:
# for iasp91
ADD_CUSTOM_COMMAND(
COMMAND ${TAU_COMMAND_PREFIX}tau_remodl iasp91 ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS tau_remodl
OUTPUT remodl.tbl remodl.hed
)
But later in the code for target ak135 it also uses OUTPUT remodl.tbl remodl.hed which recent cmake version doesn't allow
CMake Error at src/base/common/libs/3rd-party/tau/data/CMakeLists.txt:100 (ADD_CUSTOM_COMMAND):
Attempt to add a custom rule to output src/base/common/libs/3rd-party/tau/data/remodl.tbl.rule
which already has a custom rule.
Suggestion: the easist way would be to generate different / unique output filenames (remodl_iasp91.tbl, remodl_ak135.tbl) and change the source files which uses these new output files accordingly, to avoid conflicts.
Something like:
# For iasp91
ADD_CUSTOM_COMMAND(
COMMAND ${TAU_COMMAND_PREFIX}tau_remodl iasp91 ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS tau_remodl
OUTPUT remodl_iasp91.tbl remodl_iasp91.hed
)
ADD_CUSTOM_COMMAND(
OUTPUT iasp91.tbl iasp91.hed
COMMAND ${TAU_COMMAND_PREFIX}tau_setbrn iasp91
DEPENDS tau_setbrn remodl_iasp91.tbl remodl_iasp91.hed
)
# For ak135
ADD_CUSTOM_COMMAND(
COMMAND ${TAU_COMMAND_PREFIX}tau_remodl ak135 ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS tau_remodl
OUTPUT remodl_ak135.tbl remodl_ak135.hed
)
ADD_CUSTOM_COMMAND(
OUTPUT ak135.tbl ak135.hed
COMMAND ${TAU_COMMAND_PREFIX}tau_setbrn ak135
DEPENDS tau_setbrn remodl_ak135.tbl remodl_ak135.hed
)
# Custom target
ADD_CUSTOM_TARGET(
TTTData
DEPENDS tau_remodl tau_setbrn
)
ADD_DEPENDENCIES(TTT_iasp91 TTTData)
ADD_DEPENDENCIES(TTT_ak135 TTTData)
Also the line with IF(NOT CMAKE_HOST_ARCHITECTURE) contains CMAKE_HOST_ARCHITECTURE which doesn't exist, but something close would be maybe CMAKE_OSX_ARCHITECTURES, check here: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_ARCHITECTURES.html
Good or bad idea / suggestion ?